码字,杂谈

Apache部署多网站(二级域名同理)

Apache建站很容易,但是并不像IIS那样随便点几下就万事OK了,还是需要我们经过一些简单的配置才能正常运行。

对于Apache,我也仅仅是简单接触,最近研究了一下二级域名的配置方法,也是出于好奇吧,把我的配置过程分享一下,对于多网站,这个是完全同理的,因为多网站和二级域名都属于跨域操作。

《Apache部署多网站(二级域名同理)》

1、配置httpd.conf

设置多个站点,我们需要设置Apache提供的VirtualHost功能,我在网上看了不少教程,有很多坑,我一个一个都试过了,最后找到适合我的方案。

首先打开httpd.conf,这个是Apache的配置文件,因系统不同,可能名称和路径都不相同,以自己电脑为准:

  • 我的配置:Apache/2.4.6 (CentOS)
vim /etc/httpd/conf/httpd.conf

打开后在大约80行的地方(如下图所示),找到'Main' server configuration

《Apache部署多网站(二级域名同理)》

我看了很多网上的教程,都是什么直接解锁注释就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就可以访问了。我的测试效果如下:

《Apache部署多网站(二级域名同理)》

它的确已经成功了,但是此时它显示的是"不安全",这个很头疼。因为它是新站点,需要重新配置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.comapi.jeremyjone.com 不通用,需要单独索取。

嗯,同样就这么简单,他也配置好了,现在我们可以使用https://api.jeremyjone.com 访问我们的新站点了。

《Apache部署多网站(二级域名同理)》

对于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>

多个网站已经在像你招手了,快去试一下。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注