先来点清淡的。
apache 监听一个或多个端口时均可进行虚拟主机配置
httpd.conf 为apache 的主配置文件,可配置监听的端口,主目录,设置目录权限,及其他功能(还不太了解)
端口配置
#Listen 12.34.56.78:80 可配置外网网址,或127.0.0.1:端口号
#此处监听多个端口
Listen 80
Listen 8800
主目录及权限配置
DocumentRoot "D:/"
<Directory "D:/WWW/">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory "D:/thinkphp/">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory "D:/thinkphp3/">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory "D:/IDEA/">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
虚拟主机配置 httpd-vhost.conf
#<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot "${SRVROOT}/docs/dummy-host.example.com"
# ServerName dummy-host.example.com
# ServerAlias www.dummy-host.example.com
# ErrorLog "logs/dummy-host.example.com-error.log"
# CustomLog "logs/dummy-host.example.com-access.log" common
#</VirtualHost>
<VirtualHost *:8800>
# ServerAdmin webmaster@dummy-host2.example.com
# DocumentRoot "D:\IDEA\svn\jds\law-adm-web\src\main\webapp\static"
# ServerName
ErrorLog "logs/dummy-host2.example.com-error.log"
CustomLog "logs/dummy-host2.example.com-access.log" common
#静态文件不代理
#ProxyPass /static !
Alias /static "D:/svn/jds/law-adm-web/src/main/webapp/static"
ProxyPass / http://127.0.0.1:2900/
ProxyPassReverse / http://localhost:2900/
</VirtualHost>
接下来要加点料了——域名代理。
域名的基本知识:外网通过域名或公网IP可对当前电脑进行访问, 如nmg.com 主域名及*.nmg.com子域名。IP和域名的关系不是一一对应的,一个IP可有一个多个域名,但一个域名只能对应一个IP。
假设当前主机具有12.34.56.7 公网IP及aa.nmy.cn,bb.nmy.cn 两个域名。
在apache 虚拟主机配置时的常见配置方式有:
#支持公网IP:8800 访问 本机的域名未进行测试
<VirtualHost *:8800>
ServerName localhost
ServerAlias localhost
DocumentRoot "D:/wamp/www"
<Directory />
Options FollowSymLinks Includes
AllowOverride None
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName aa.nmy.cn #本机域名1
ServerAlias aa.nmy.cn #本机域名1
DocumentRoot "D:/see/" #需开通访问权限,只能访问该目录及子目录
<Directory />
Options FollowSymLinks Includes
AllowOverride None
Order deny,allow
Allow from all
</Directory>
#反向代理 可配置多个,仅在当前域名下进行代理
ProxyPass /see http://127.0.0.1:8080/see
ProxyPassReverse /see http://127.0.0.1:8080/see
</VirtualHost>
<VirtualHost *:80>
ServerName bb.nmy.cn #本机域名2
ServerAlias bb.nmy.cn #本机域名2
DocumentRoot "D:/look/" #需开通访问权限,只能访问该目录及子目录
<Directory />
Options FollowSymLinks Includes
AllowOverride None
Order deny,allow
Allow from all
</Directory>
#反向代理 可配置多个,仅在当前域名下进行代理
ProxyPass /look http://127.0.0.1:8080/look
ProxyPassReverse /look http://127.0.0.1:8080/look
</VirtualHost>
<VirtualHost *:8800>
ServerName 12.34.56.7 #公网IP
ServerAlias 12.34.56.7 #公网IP
DocumentRoot "D:/notice/" #需开通访问权限,只能访问该目录及子目录
<Directory />
Options FollowSymLinks Includes
AllowOverride None
Order deny,allow
Allow from all
</Directory>
#反向代理 可配置多个,仅在当前域名下进行代理
ProxyPass /notice http://127.0.0.1:8080/notice
ProxyPassReverse /notice http://198.168.1.66:8080/notice
</VirtualHost>
分别为通过 aa.nmy.cn/see 路径访问 本地see项目,
通过 bb.nmy.cn/look 路径访问 本地look项目,
通过 12.34.56.7:8800/notice 路径访问 局域网中的notice项目,
各域名之间不可 跨项目 代理。
ps:常见访问某域名时无端口号,只是省略时默认访问80端口。如果apache 监听其他端口时需添加端口,如12.34.56.7:8800。