【问题标题】:Variable in nginx proxy_pass causes MIME type issuenginx proxy_pass 中的变量导致 MIME 类型问题
【发布时间】:2020-04-15 20:53:05
【问题描述】:

我整个晚上都用谷歌搜索了这个主题,但似乎无法理解这一点。我的情况如下:我的网络上有一个 NAS(主机名 MYHOSTNAME),我还有一个 nginx 反向代理,在另一台机器上。我想为我的配置文件的 proxy_pass 部分使用一个变量,这样如果代理启动时 NAS 处于脱机状态,它就不会崩溃。基本上:

location /MYNAS {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_redirect   off;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://MYHOSTNAME:1234/; 

工作得很好。但以下:

location /MYNAS {
        set $VAR_HOSTNAME MYHOSTNAME;
        resolver 192.168.x.x;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_redirect   off;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://$VAR_HOSTNAME:1234/;

给我带来麻烦。网页加载了一个空白页面,在浏览器控制台中,我可以看到:

Refused to execute script from 'something' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.
mydynamicdns/:1 Refused to execute script from 'somethingelse' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.
desktop.js?v=1562143318:3 Uncaught TypeError: Cannot read property 'diskless' of undefined
    at _S (desktop.js?v=xxx:x)
    at aa.defaultCSSSelectors (desktop.js?v=xxx:x)
    at desktop.js?v=xxx:x
    at ext-all.js?v=xxx:x
    at b (ext-all.js?v=xxx:x)

我不知道如何进行这项工作的新想法...在此先感谢各位,我们将不胜感激。

【问题讨论】:

标签: nginx mime-types


【解决方案1】:

我认为我不能完全解释原因的技术细节,但是通过在 nginx 中打开调试并与有效的用例进行比较,我最终认为我需要取消 /MYNAS/ 部分。关键是下面的重写行:

location /MY_NAS/ {
        set $MY_NAS http://MYNAS:1234;
        resolver 192.168.x.x;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_redirect   off;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        rewrite /MY_NAS/(.*) /$1 break;
        proxy_pass $MY_NAS;
    }

希望有一天能帮助别人,让你免于头痛。

【讨论】:

    猜你喜欢
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    相关资源
    最近更新 更多