需求:因为有两个微信公众号,机房公网IP只关联了一台服务器,就需要根据不同的域名来访问服务器中的不同应用,所以我们需要在apache上做代理,a.test.com 域名访问的是apache上原有的80端口服务,b.test.com访问的是服务器上的tomcat 8080端口服务。
- 其实很简单,我们需要做的就是在apache上配置虚拟主机,首先要做的就是
在httpd.conf中要将Include前面的#去掉
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
其次,修改confextrahttpd-vhosts.conf文件,添加如下配置:
<VirtualHost *:80>
ServerName a.test.com ErrorLog "logs/wechat_error.log" ProxyPreserveHost On ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
<VirtualHost *:80>
ServerName b.test.com ServerAlias 192.168.168.2 ErrorLog "logs/sxwxw_error.log" DocumentRoot "D:/xampp/htdocs/"
</VirtualHost>
第一个VirtualHost是将所有通过公网IP:80 端口访问进来的请求,根据域名,代理到tomcat的8080端口服务上。比如我请求的域名是 http://a.test.com/article/list ,那么就是请求的tomcat上的服务了。
第二个VirtualHost也是将所有从公网IP:80端口进来的请求,识别域名是 b.test.com,那么就还是访问原apache上的应用。
就这么简单!
- 另外我还踩了一个坑,就是apache要加载相应模块,比如把以下几个模块前的注释去掉
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule proxy_http_module modules/mod_proxy_http.so