Ubuntu

Apache2反向代理從WAN訪問多個區域網路伺服器

  • July 13, 2016

我在區域網路上執行的不同伺服器上大約有 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 該請求很可能會失敗,因為該資源未被反向代理覆蓋。

引用自:https://serverfault.com/questions/789383