背景
我想在我的服务器上使用 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>
答案1
事实证明,这很简单,只需在重写中添加 [PT] 标志即可
答案2
添加 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>