CentOS7.2 Apache LAMP单端口,多站点,多证书SSL,并自动跳转带www域名的https链接教程。
环境为 Centos7.2,其他环境可能略有不同。
之前租用了一台阿里云的服务器,安装了 LAMP 分别给多个人做多个网站,同时需要满足几个功能:
- 分别用不同的域名访问服务器的
80/443
端口。 - 域名都要从不带
www
的域名自动跳转到带www
的域名,方便 SEO。 - 域名都要自动从
http
跳转到https
,也就是使用证书的443
端口。
网上搜了一堆资料,都只能单一实现上述一个功能,没有一个能教人同时实现这三个功能的。 于是写下这篇,希望对大家有所帮助。
1. 打开 Apache 虚拟主机配置
注意,每次修改 httpd.conf
都需要重启 Apache 服务,否则修改不会生效。
重启命令:
1 | service httpd restart |
首先用 vi
打开 httpd.conf
1 | vi /etc/httpd/conf/httpd.conf |
查找
IncludeOptional conf.d/*.conf
是否存在,如果没有则添加,如果有则把前面的 #
号去掉。
2. 配置 httpd.conf 文件
2.1 配置网站目录位置与权限
找到
1 | <Directory "/var/www/html"> |
将/var/www/html
改成你的网站目录,这里可以设置多个目录,目录与目录之间可以是上下级关系。 比如我的目录设置:
1 | <Directory "/home/web"> |
这里为了让思路更清晰,我只设置了一个目录/home/web
。后面我们会在这个目录下建立多个文件夹分别放置不同的网站。 相关配置请参考这里: https://www.80note.com/2019/01/451.html
如果你不知道.htaccess
具体怎么用,那就填none
好了,在这里我用的是none
。Require
指令用来控制允许或者拒绝访问来源。
Require all granted
允许所有来源访问
Require all denied
拒绝所有来源访问
我这里设置的是允许所有来源访问,Require
还有很多用法,这里就不展开了,想了解的可以去这里看看 https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require
2.2 配置虚拟主机端口与目录
查找
NameVirtualHost *:80
是否存在,如果没有则添加,如果有则把前面的 #
号去掉。后面都是这样操作,不再重复。 这里的 80
是指 http
默认端口号,可根据需要修改,但正常情况一般不修改。 设置虚拟主机目录
1 | <VirtualHost *:80> |
其中 80
指该目录对应端口。
/home/web/80note
是对应目录位置,可根据需要修改。
80note.com
是该目录对应域名。
新增一个目录对应另一个域名:
1 | <VirtualHost *:80> |
就是这么简单。
注意: 如果用域名访问,端口可以设置成一样的。 如果是通过 IP 访问,端口需要设置成不一样的。 域名需要从无www
跳转 www
,请继续往下看。
2.3 从不带 www 的域名跳转到 www 域名
修改刚才的配置内容
1 | <VirtualHost :80> |
这里会把所有的 80note.com
地址重定向到 www.80note.com
同时也会把所有的 zuihuimai.net
地址重定向到 www.zuihuimai.net
根据自己需要修改域名就好。
2.4 从 http 自动跳转到 https
注意:这里请提前配置好 https
的 ssl
证书,否则会造成网站无法访问。 配置方法参考这里 https://www.80note.com/2019/01/480.html 根据刚才的配置,新增 https 跳转重定向
1 | <VirtualHost :80> |
新增内容会将之前的地址转为含有 www
的地址,再次重定向到 https
地址。 修改完毕后按 ESC
键,用
:x
或者 :wq
保存文件。 重启 apache
1 | service httpd restart |
新配置生效。