Apache 反向代理的一點小體驗

Jiajun Xu 發表於 四, 02/18/2021 - 11:06

這兩天試了一個稍微比較專業的作法(應該說以前都太土炮了),就是在架站的 VM 前面,再加一個 VM 做 reverse proxy。不過這次用 Apache,Nginx 的毛實在太多了,現在沒力氣折騰…

Apache 要做 reverse proxy 真的很簡單,不過基礎的教學裡,指向的伺服器(backend server)都只有一個網站,但我的 case 裡,backend server 裡同時架設了多個網站,所以 Apache 的 "ProxyPass" 會變成 IP + subfolder,例如:

<VirtualHost *:80>
    # ...略

    ProxyPreserveHost On
    ProxyPass / http://192.168.2.100/drupalsite
    ProxyPassReverse / http://192.168.2.100/drupalsite
</VirtualHost>

但問題不知道出在哪裡,那個 subfolder 就是會一直出現在網址後面,沒辦法直接接到 root:

# 給 Proxy 掛上域名之後,會變這樣:
http://www.domain.com/drupalsite

# 但應該要長這樣:
http://www.domain.com

折騰了老半天之後才想到:backend server 裡的個別網站,不要用 subfolder,改用 Virtual host 導引到不同 port 不就好了!

  • backend server 的 apache config:
Listen 8080
<VirtualHost *:8080>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/drupalsite
        #  ...略
</VirtualHost>
  • proxy 的 apache config:
<VirtualHost *:80>
    # ...略
    ProxyPreserveHost On
    ProxyPass / http://192.168.2.100:8080
    ProxyPassReverse / http://192.168.2.100:8080
</VirtualHost>

唉,腦袋沒轉過來,浪費超多時間。

標籤 (Tags)