Apache-2.2

Apache2 - 使用反向代理時重寫

  • April 22, 2015

背景

我想在我的伺服器上使用 webui 設置 utorrent。

問題

Utorrent 設置了自己的網路伺服器,預設情況下,監聽埠 8080。

然後通過訪問 example.com:8080/gui 訪問 ui

我的目標是讓 subdomain.server.com 使用反向代理。

當我發現某些 url 被硬編碼為 /gui/* 時,問題就出現了,這當然會破壞事情。

我現在正在嘗試使用 mod rewrite 從請求中刪除初始 /gui ,但由於某種原因它不起作用。

我可以訪問該站點(我得到了 utorrent 載入螢幕),但是如果我檢查我的日誌,我會看到所有/gui/token.html獲取 404 Not Found 響應的請求,但/token.html如果我手動嘗試它就可以了。

我已經嘗試將重寫移動到代理,但這也不起作用。

到目前為止我所擁有的

這是我的虛擬主機文件:

<IfModule mod_ssl.c>
<VirtualHost *:443>
   ServerName subdomain.example.com

   RewriteEngine  on
   RewriteRule ^/gui(/?)(.*)$ /$2

   ProxyRequests off
   ProxyPass / http://127.0.0.1:8080/gui/
   ProxyPassReverse / http://127.0.0.1:8080/gui/
   RequestHeader set Authorization "Basic YWRtaW46"
   ErrorLog /var/log/apache2/utorrent-error.log
   CustomLog /var/log/apache2/utorrent-access.log common

   SSLEngine on
   SSLCertificateFile /etc/ssl/certs/*.domain.crt
   SSLCertificateKeyFile /etc/ssl/private/*.domain.key
   SSLCACertificateFile /etc/ssl/certs/domain-ca-ssl.crt

   BrowserMatch "MSIE [2-6]" \
       nokeepalive ssl-unclean-shutdown \
       downgrade-1.0 force-response-1.0
   BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>

<proxy http://127.0.0.1:8080/gui/*>
   Order deny,allow
   Deny from all
   Allow from all
   AuthName subdomain.example.com
   AuthType Basic
   AuthUserFile /etc/utorrent/.htpasswd
   Require valid-user
</proxy>
</IfModule>

原來它就像添加

$$ PT $$重寫的標誌

添加了 PT 開關後,工作起來就像一個魅力

<VirtualHost *:80>
       ServerName utorrent.yourdomain.com
       ProxyPreserveHost on
       RewriteEngine  on
       RewriteRule ^/gui(/?)(.*)$ /$2 [PT]
       ProxyPass / http://127.0.0.1:8080/gui/   
       ProxyPassReverse / http://127.0.0.1:8080/gui/   
</VirtualHost>

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