Apache http服务中 多域名与ip端口 的配置
服务器:Centos7
现配置 通过域名访问ip端口 对应目录网页
test1.reloss.com 192.168.127.1:81 /var/www/test1
test2.reloss.com 192.168.127.1:82 /var/www/test2
1. 在Centos7中找到Apache http的配置目录,即 /etc/httpd/conf/httpd.conf
命令:
cd /etc/httpd/conf
vi httpd.conf
2. 按Esc,输入 :$ 回车到最后一行,在按 a ,进行编辑
在左下角
3. 在后面加上以下配置
# 1. 全配置
# test1.reloss.com 对应192.168.127.1:81 对应/var/www/test1目录网页
# 这里对应的ip和端口,直接不需要动直接 *:80 Apache默认端口
<VirtualHost 192.168.127.1:81>
ServerName test1.reloss.com # 外部访问的域名
ServerAlias test1.reloss.com # 上面网址的别名,给虚拟主机增加多个域名
DocumentRoot "/var/www/test1" # 域名访问的 目录路径 及 站点网页
# 添加可以执行php的文件类型,为shtml文件开启SSI,使浏览器能解析,不至于直接输出代码
# AddType application/x-httpd-php .htm 就是指.htm可以解析php
# AddType text/html .shtml # 与上选一
# 为.shtml开启包含(include),在.shtml文件中(如<!--include ...-->)可以引入文件
# AddOutputFilter INCLUDES .shtml
#映射URL 到文件系统的特定目录
Alias /test3/ /var/www/test3 # 及 test1.reloss.com/test3
Alias /test4/ /var/www/test4 # 及 test1.reloss.com/test4
#权限设置,标签中的地址相对于上面 DocumentRoot 的值
<Directory "/var/www/test1"> # 同上路径配置
# 参数设置Indexes开启索引,可以在浏览器中显示当前目录文件列表。一般框架中因后台模板不是html的后台虚拟主机不加Includes(选)
Options +Indexes +Includes +FollowSymLinks +MultiViews
DirectoryIndex index.html index.htm # 查找打开文件的顺序
AllowOverride All # 允许定义.htaccess文件(None 忽略.htaccess文件)(选)
Order allow,deny # 能访问的白名单和黑名单(选)
Require all granted # 允许所有请求(选)
Allow from all # 权限
ErrorDocument 404 https://192.168.172.1/404.html #路径匹配时跳转的404界面(选)
</Directory>
</VirtualHost>
# 2. 一般使用可简略为以下
# test2.reloss.com 对应192.168.127.1:82 对应/var/www/test2目录网页
<VirtualHost 192.168.127.1:82>
ServerName test2.reloss.com
DocumentRoot "/var/www/test2"
<Directory "/var/www/test2">
DirectoryIndex index.html index.htm
Allow from all
</Directory>
</VirtualHost>
其他
1.常规配置
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName www.test.com
</VirtualHost>
- DocumentRoot:网站目录
- ServerName:网站域名
2.常用附加配置
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName www.test.com
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
ErrorDocument 404 https://192.168.172.1/404.html
</Directory>
</VirtualHost>
- Directory节点:定义目录属性
- Options Indexes FollowSymLinks:开启目录访问,显示目录结构,并允许在此目录中使用符号连接
- AllowOverride All:允许定义.htaccess文件
- AllowOverride None:忽略.htaccess文件
- Require all granted:允许所有请求
- ErrorDocument 404 https://192.168.172.1/404.html:路径匹配时跳转的404界面
3.开启HTTPS
<VirtualHost _default_:443>
DocumentRoot "/var/www/html"
ServerName www.test.com
SSLEngine on
SSLCertificateFile /etc/ssl/2_www.test.com.crt
SSLCertificateKeyFile /etc/ssl/3_www.test.com.key
SSLCertificateChainFile /etc/ssl/1_www.test.com.crt
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
ErrorDocument 404 https://www.test.com/404.html
</Directory>
</VirtualHost>
- SSLEngine on:开启SSL
- SSLCertificateFile:指定证书公钥文件
- SSLCertificateKeyFile:指定证书私钥文件
- SSLCertificateChainFile:指定证书链文件
4.反向代理(端口转发)
<VirtualHost _default_:443>
ServerName www.test.com
SSLEngine on
SSLCertificateFile /etc/ssl/api/2_awww.test.com.crt
SSLCertificateKeyFile /etc/ssl/3_www.test.com.key
SSLCertificateChainFile /etc/ssl/1_www.test.com.crt
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /v2 http://localhost:92/
ProxyPass /v1 http://localhost:91/
ProxyPass / http://localhost:90/
ProxyPassReverse /v2 http://localhost:92/
ProxyPassReverse /v1 http://localhost:91/
ProxyPassReverse / http://localhost:90/
</VirtualHost>
- ProxyPreserveHost On:开启反向代理
- ProxyRequests Off:关闭正向代理
- ProxyPass:设置反向代理路径
- ProxyPassReverse:使Apache自动处理反向代理中的从定向响应,一般和ProxyPass一起用
5.http从定向到https
<VirtualHost *:80>
ServerName www.test.com
#redirect
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>
- RewriteEngine on:开启从定向功能
- RewriteCond %{SERVER_PORT} !^443$:从定向条件,端口不是443时重定向,^为开头,$为结束
- RewriteRule:重定向规则,L:表明当前规则是最后一条规则,停止分析以后规则的重写;R:强制外部重定向