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