Apache多站点配置

2020年4月11日 · 16 views · 

单个站点

由于apache会读取httpd.confconf.d文件夹里的配置文件,所以可以直接在httpd.conf后面添加或者在conf.d内新建配置文件。

<VirtualHost *:80> #表示一个虚拟主机,*表示所有IP
    ServerName localhost #表示域名(或IP),必写
    DocumentRoot /www/ #表示站点根目录在Linux中的位置,必写
    ErrorLog /www/logs/err.log #自定义错误日志,可选
</VirtualHost>
<Directory "/www/"> #配置Linux路径访问权限,不配置默认禁止
    Options FollowSymLinks
    AllowOverride All #允许.htaccess
    Require all granted #允许访问
</Directory>  

多个站点

可以针对Ip/端口/域名来配置不同的站点。

  • 对于不同的Ip/域名,修改ServerName参数
  • 对于不同的端口,修改VirtualHost里面的端口

参考链接:多站点配置

对于每个站点配置ssl

先确保配置文件中侦听了443端口。

Listen 443

如果要同时支持http和https,则复制一份原站点的配置文件改动,否则直接改动。把80端口改成443端口并添加以下内容:

    SSLEngine on
    SSLCertificateFile /www/fullchain.crt #证书文件
    SSLCertificateKeyFile /www/private.key #私钥文件

禁止ip访问&其它域名访问

由于apache是从上往下匹配,没匹配到就默认为第一个virtualhost,所以在最后面添加virtualhost,使无论如何都能匹配到。在配置文件最后添加上:

#other virtualhost
#...
<VirtualHost *:80>
    ServerName yourip #填写服务器ip,匹配用ip访问
    ServerAlias * #匹配域名访问
    DocumentRoot /www/html/ #指向禁止访问页面
</VirtualHost>
<VirtualHost *:443> #注意443也要加一个,不然别人通过https访问就默认第一个vh了
    ServerName yourip #填写服务器ip,匹配用ip访问
    ServerAlias * #匹配域名访问
    DocumentRoot /www/html/ #指向禁止访问页面
</VirtualHost>
<Directory "/www/html">
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>

成功的配置文件

#我的网站
<VirtualHost *:80>
    ServerName domain
    DocumentRoot "/www/web/"
</VirtualHost>
<VirtualHost *:443>
    ServerName domain
    DocumentRoot "/www/web/"
    SSLEngine on
    SSLCertificateFile /www/fullchain.crt
    SSLCertificateKeyFile /www/private.key
</VirtualHost>
<Directory "/www/web">
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>

#禁止其它访问
<VirtualHost *:80>
    ServerName IP
    ServerAlias *
    DocumentRoot /www/html/
</VirtualHost>
<VirtualHost *:443>
    ServerName IP
    ServerAlias *
    DocumentRoot /www/html/
</VirtualHost>
<Directory "/www/html">
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>

调试时候的坑

千万别用chorme!用curl!chrome有奇奇怪怪的缓存问题!

返回

Steven's Website Copyright © 2020 Steven
Powerd by Wordpress & Theme by Steven
粤ICP备20028373号