Apache2反向代理從WAN訪問多個區域網路伺服器
我在區域網路上執行的不同伺服器上大約有 5 個 Web 應用程序,它們都在監聽埠 80
我想通過在執行在 Ubuntu 16.04 上的主網路伺服器上設置 Apache 反向代理來使它們可以從 Internet 訪問
更改它們的埠,然後再進行埠轉發並不是一個很好的選擇,因為有很多設備需要重新配置。另外我想讓它保持使用者友好,手動編寫埠不是
所以基本上,我想通過以下方式重定向請求:
www.mydomain.com/server3
應該重定向到192.168.1.3:80
www.mydomain.com/server4
應該重定向到192.168.1.4:80
等等
現在,我按照以下說明操作: https ://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension
安裝並啟用所需的模組後,我在 `/etc/apache2/sites-enabled/000-default.conf’ 文件中添加了以下幾行:
<VirtualHost *:80> ProxyPreserveHost On # Servers to proxy the connection, or; # List of application servers: # Usage: # ProxyPass / http://[IP Addr.]:[port]/ # ProxyPassReverse / http://[IP Addr.]:[port]/ # Example: ProxyPass "/server3" "http://192.168.1.3:80" ProxyPassReverse "/server3" "http://192.168.1.3:80" ServerName pacs </VirtualHost>
但它沒有任何效果,同樣如此:
<VirtualHost *:80> ProxyPreserveHost On ProxyPass / http://192.168.1.3:80 ProxyPassReverse / http://192.168.1.3:80 ServerName pacs </VirtualHost>
我錯過了什麼嗎?
該指令
ProxyPass "/server3" "http://192.168.1.3:80"
不需要 HTTP 的預設埠號 80,我會添加一個尾部斜杠:
ProxyPass "/server3/" "http://192.168.1.3/
。從 2.4 版本開始,該手冊建議使用與包含在指令中的 ProxyPass 指令功能相同的語法
<Location>
:<VirtualHost *:80> ServerName pacs <Location /server3/> ProxyPass "http://192.168.1.3/" ProxyPassReverse "http://192.168.1.3/" </Location> </VirtualHost>
重新啟動請求後,
http://pacs/server3/
現在應該轉發到 192.168.1.3,檢查那裡的訪問日誌以查看它們是否進入。注意:例如,如果 192.168.1.3 上的內容引用 /css/style.css,您的瀏覽器將解釋該內容並發出一個請求,
http://pacs/css/style.css
該請求很可能會失敗,因為該資源未被反向代理覆蓋。