How to proxy calls to specific URL to deluge using NGINX?

后端 未结 1 1621
醉话见心
醉话见心 2021-01-17 03:52

I want to use NGINX to as a proxy to get to Deluge which is inside my home network (NGINX is publically available).

This configuration works:

locatio         


        
相关标签:
1条回答
  • 2021-01-17 04:03

    I did find a solution for this, but found a bug also in Nginx in the same time

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

    Edit-1

    Seems like bug i logged was an invalid one, which even helped me understand few more things. So I edited the config a bit.

    You need to use below config

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

    The key was to insert a base url into the pages using below

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

    And then make replacement in src and href attributes in html. And also url(' in css entries.

    Luckily deluge has a JavaScript config which has the base url. So we can override the same by adding

    sub_filter '"base": "/"' '"base": "/deluge/"';
    
    0 讨论(0)
提交回复
热议问题