0

我想使用 NGINX 作为代理来访问我家庭网络中的 Deluge(NGINX 是公开可用的)。

此配置有效:

location 8112;

location / {
    proxy_pass http://deluge_address:8112;
}

但是我想使用形式的地址http://nginx_address/deluge来代理到 internal http://deluge_address:8112

我尝试了以下方法:

location /deluge/ {
    proxy_pass http://deluge_address:8112/;
}

(我尝试了不同的尾随组合/- 没有工作)。

但我得到404 Not found了。

我对网络有一些了解,但不是太多。有人知道我做错了什么吗?

4

1 回答 1

2

我确实找到了解决方案,但同时在 Nginx 中也发现了一个错误

https://trac.nginx.org/nginx/ticket/1370#ticket

编辑-1

似乎我记录的错误是无效的,这甚至帮助我理解了更多的东西。所以我稍微编辑了配置。

您需要使用以下配置

location ~* /deluge/(.*) {
    sub_filter_once off;
    sub_filter_types text/css;
    sub_filter '"base": "/"' '"base": "/deluge/"';
    sub_filter '<head>' '<head>\n<base href="/deluge/">';
    sub_filter 'src="/' 'src="./';
    sub_filter 'href="/' 'href="./';
    sub_filter 'url("/' 'url("./';
    sub_filter 'url(\'/' 'url(\'./';

    set $deluge_host 192.168.33.100;
    set $deluge_port 32770;
    proxy_pass http://$deluge_host:$deluge_port/$1;
    proxy_cookie_domain $deluge_host $host;
    proxy_cookie_path / /deluge/;
    proxy_redirect  http://$deluge_host:$deluge_port/ /deluge/;
}

关键是使用以下将基本网址插入页面

sub_filter '<head>' '<head>\n<base href="/deluge/">';

src然后在 html 中的和href属性中进行替换。并且也在url('css条目中。

幸运的是,deluge 有一个带有基本 url 的 JavaScript 配置。所以我们可以通过添加来覆盖它

sub_filter '"base": "/"' '"base": "/deluge/"';
于 2017-08-29T17:11:54.663 回答