2

我目前在我的路由器上使用 nginx 作为反向代理,具有单个服务器块和多个位置映射到我的 NAS 上的特定端口。除了一项——Synology DSM 外,一切似乎都运行良好。现在,在我的设置中,我可以通过 WAN 访问 DSM 的唯一方法是使用以下配置:

location / {
   proxy_pass http://127.0.0.1:5000;
}

我更喜欢这样的东西:

location /dsm {
   proxy_pass http://127.0.0.1:5000;
}

但是,我似乎无法让它发挥作用。我尝试了带/不带斜杠的 location 和 proxy_pass 并尝试了不同的重写选项,但没有任何效果。我要么得到“找不到页面”错误,要么页面加载,我可以查看源代码但没有显示任何内容。

应该注意的是,DSM 是基于 CGI 的(加载为http://127.0.0.1:5000/webman/index.cgi),并且看起来在 css 和 js 中硬编码了绝对路径。

4

1 回答 1

0

3 年前问过,但这个月(2018 年 10 月)我遇到了同样的问题。是的,硬编码路径一团糟。简单的 PassProxy/ProxyPassReverse 不起作用。我不是计算机专家,一点也不。我在互联网上的某个地方找到了这个配置,在许多其他的命题中,作为一个奇迹,它是唯一一个有效的......(Debian 9,Apache2)。斜线必须完全以这种方式。您必须将 dsm 称为http://your.local.server.name/dsm /http://your.internet.name/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>
于 2018-10-15T11:01:23.317 回答