【问题标题】:How to proxy calls to specific URL to deluge using NGINX?如何代理对特定 URL 的调用以使用 NGINX 泛滥?
【发布时间】:2017-08-30 04:46:13
【问题描述】:

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

此配置有效:

location 8112;

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

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

我尝试了以下方法:

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

(我尝试了尾随 / 的不同组合 - 无济于事)。

但我得到的是404 Not found

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

【问题讨论】:

  • Deluge 是基于 HTML 的网站吗?如果是,那么它可能会或可能不会起作用。假设 deluge 的首页有一个链接“/abc”,deluge 期望它在“nginx_address/abc”可用,但您希望该页面请求“nginx_address/deluge/abc”。但由于浏览器发出此请求,它不会工作
  • Deluge 没有到达外部 - 它只是 deluge_address 托管的服务的 Web UI(您可以在此处查看 howtogeek.com/142044/…

标签: nginx proxy reverse-proxy deluge


【解决方案1】:

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

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

Edit-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/;
}

关键是使用下面的方法在页面中插入一个基本 url

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

然后在 html 中的 srchref 属性中进行替换。还有 url(' 在 css 条目中。

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

sub_filter '"base": "/"' '"base": "/deluge/"';

【讨论】:

  • 我按原样尝试过(通过将 deluge 主机和端口变量更改为我的) - 不幸的是,它不起作用。我仍然得到 404。我会尝试朝这个方向前进。你能告诉我,我怎样才能知道,NGINX 试图发出什么调用以及响应是什么?
  • 我使用 docker 对此进行了测试,对我来说效果很好。这就是我运行的docker run -P -d -it linuxserver/deluge。你可以试试我的解决方案
  • 它最终按原样工作。不确定,出了什么问题。我尝试逐行注释所有内容并取消注释 - 最后,它确实有效。我刚刚添加了两行来启用日志记录(访问/错误日志)。谢谢!
  • P.S.我在没有docker的情况下安装了NGINX,反正没关系。
  • 使用 ghcr.io/linuxserver/deluge 完美运行
猜你喜欢
  • 2015-01-30
  • 2014-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
相关资源
最近更新 更多