需求:因为有两个微信公众号,机房公网IP只关联了一台服务器,就需要根据不同的域名来访问服务器中的不同应用,所以我们需要在apache上做代理,a.test.com 域名访问的是apache上原有的80端口服务,b.test.com访问的是服务器上的tomcat 8080端口服务。

  1. 其实很简单,我们需要做的就是在apache上配置虚拟主机,首先要做的就是

在httpd.conf中要将Include前面的#去掉

# Virtual hosts
Include conf/extra/httpd-vhosts.conf
  1. 其次,修改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上的应用。

就这么简单!

  1. 另外我还踩了一个坑,就是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

Last modification:August 28, 2020
If you think my article is useful to you, please feel free to appreciate