Apache的reverse proxy设定

工作需要,从同一个端口进入,在服务器端分流,去执行不同端口的服务。用apache的reverse proxy的功能实现。

①「apache2ctl -M」查看proxy module(下面的★)是否加载。如果没有加载,执行「a2enmod proxy_http」加载。

root@server:/etc/apache2/sites-available# apache2ctl -M
Loaded Modules:
 core_module (static)
 so_module (static)
 mpm_event_module (shared)
 negotiation_module (shared)
 proxy_module (shared)        ★
 proxy_http_module (shared)  ★
 rewrite_module (shared)
 setenvif_module (shared)
 status_module (shared)

 

②Port 9596用的httpd conf文件里追加reverproxy的设定

   作为前提,确保以下文件,及文件夹的存在

   /var/wwwtest_9596/test/index.html

   /var/wwwtest_9596/test/apachetest

<VirtualHost *:9596>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/wwwtest_9596/

        ########追加部分########
        <IfModule mod_proxy.c>
        #Reverse Proxy
        <Proxy *>
                Order Deny,Allow
                Deny from all
                Allow from all
        </Proxy>

        ProxyRequests Off
        #proxy setting

        ProxyPass                   /test/apachetest/ http://127.0.0.1:80/
        ProxyPassReverse        /test/apachetest/ http://127.0.0.1:80/
        </IfModule>
       ########追加部分########
</VirtualHost>

 

③「service apache2 restart」,重启apache服务,以让上述proxy设定生效。

 

④从浏览器里输入http://serverip:9596/test,此时执行的是9596端口下的服务。

 

 

⑤从浏览器里输入http://serverip:9596/test/apachetest/,此时执行的是80端口下的服务。一般80下默认的是打开apache的测试页面。

  其实apache做了一个替换http://serverip:9596/test/apachetest/  -> http://serverip:80/

  其实如果带参数的话,会自动传过去。http://serverip:9596/test/apachetest/?u=username&p=password  -> http://serverip:80/?u=username&p=password

 

 

posted @ 2017-06-23 17:18  懒先生的夫人  阅读(1435)  评论(0编辑  收藏  举报