我目前在我的路由器上使用nginx作为反向代理,只有一个服务器块和多个位置映射到我的NAS上的特定端口。除了一个项目 - Synology DSM之外,一切似乎都运行正常。现在,在我的设置中,我只能通过以下配置访问DSM:
location / {
proxy_pass http://127.0.0.1:5000;
}
我更喜欢这样的事情:
location /dsm {
proxy_pass http://127.0.0.1:5000;
}
然而,我似乎无法让它发挥作用。我已尝试使用/不使用结束斜杠的位置和proxy_pass,并尝试了不同的重写选项,但没有任何效果。我要么得到"找不到页面"错误或页面加载,我可以查看源,但没有显示任何内容。
应该注意的是,DSM是基于CGI的(加载为http://127.0.0.1:5000/webman/index.cgi
),看起来在css和js中存在硬编码的绝对路径。
答案 0 :(得分:0)
问了3年前,但是这个月(2018年10月)我遇到了同样的问题。是的,它与硬编码的路径混在一起。简单的PassProxy / ProxyPassReverse无法正常工作。我不是计算机专家,一点也不。我在互联网上的许多其他地方找到了这种配置,而且奇迹般的是,它是唯一可行的配置……(Debian 9,Apache2)。斜线必须完全采用这种方式。您必须以http://your.local.server.name/dsm / 或http://your.internet.name/dsm / 呼叫dsm。 我几乎不知道每条配置线的功能,也不敢删除任何内容。让大师们找出...
在我的机器上,我编辑了/etc/apache2/sites-enabled/000-default.conf 但我想该脚本可以在任何反向代理服务器上使用。
<VirtualHost *:80>
ServerName your.local.server.name
ServerAlias your.internet.name
<Location /dsm/>
ProxyPass http://your.synology.dsm:5000/
ProxyPassReverse /
ProxyHTMLEnable On
ProxyHTMLURLMap / /dsm/
RequestHeader unset Accept-Encoding
Order allow,deny
Allow from all
</Location>
</VirtualHost>