Apache建站很容易,但是并不像IIS那样随便点几下就万事OK了,还是需要我们经过一些简单的配置才能正常运行。
对于Apache,我也仅仅是简单接触,最近研究了一下二级域名的配置方法,也是出于好奇吧,把我的配置过程分享一下,对于多网站,这个是完全同理的,因为多网站和二级域名都属于跨域操作。
1、配置httpd.conf
设置多个站点,我们需要设置Apache提供的VirtualHost
功能,我在网上看了不少教程,有很多坑,我一个一个都试过了,最后找到适合我的方案。
首先打开httpd.conf
,这个是Apache的配置文件,因系统不同,可能名称和路径都不相同,以自己电脑为准:
- 我的配置:Apache/2.4.6 (CentOS)
vim /etc/httpd/conf/httpd.conf
打开后在大约80行的地方(如下图所示),找到'Main' server configuration
我看了很多网上的教程,都是什么直接解锁注释就OK了,很不幸,2.4.6版本已经没有注释的代码了。。。所以需要我们自己填写。不过这段注释文本已经写的很明白,我们照葫芦写即可。
所以其实这段代码不一定写在这里,不过我还是习惯在相关注释文本下写对应的代码块。将如下代码添加到此处,也就是上图的代码部分(88行开始)
其实这个就是默认配置,注释已经写明白,如果配置了<VirtualHost>
,那么默认配置将会被覆盖,为了默认可以正常使用,我们需要把这段配置放在第一个。
# 这是默认站点配置
<VirtualHost *:80>
ServerAdmin root@localhost
ServerName localhost:80
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# 这是自定义的新站点配置
<VirtualHost *:80>
ServerAdmin root@localhost # 你的邮箱
ServerName api.jeremyjone.com # 该站点的访问域名
DocumentRoot "/var/www/html2" # 该站点文件路径
<Directory "/var/www/html2"> # 该站点路径访问权限
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
然后重启:
systemctl restart httpd
嗯,你没看错,他已经可以了。当然,不要忘记创建上面新建的/var/www/html2
文件夹,并且声称一个index.html
文件,这样,api.jeremyjone.com
就可以访问了。我的测试效果如下:
它的确已经成功了,但是此时它显示的是"不安全",这个很头疼。因为它是新站点,需要重新配置SSL,所以,我们还需要配置一下SSL。
2、配置SSL.conf
同样的,打开vim /etc/httpd/conf.d/ssl.conf
文件,不用细看,直接反倒最下面,他应该是以</VirtualHost>
结尾,没有错,这个配置文档本身完完全全是为了我们的默认主站点配置的。我们现在只需要在下面创建一个新配置即可。
<VirtualHost *:443>
DocumentRoot "/var/www/html2"
ServerName api.jeremyjone.com
SSLEngine on
SSLCertificateFile 你的certificateFile文件
SSLCertificateKeyFile 你的certificateKeyFile文件
SSLCertificateChainFile 你的certificateChainFile文件
</VirtualHost>
- SSL认证文件可以在各个云服务商免费索取。注意,免费的SSL认证只支持单个站点,即 www.jeremyjone.com 与 api.jeremyjone.com 不通用,需要单独索取。
嗯,同样就这么简单,他也配置好了,现在我们可以使用https://api.jeremyjone.com 访问我们的新站点了。
对于http跳转到https,还需要另外设置.htaccess
文件,在/var/www/html2
文件夹下创建一个新的.htaccess
文件,把下列代码复制过去即可:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_HOST} ^api.jeremyjone.com [NC]
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^/tz.php
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</IfModule>
多个网站已经在像你招手了,快去试一下。
文章评论