Переменная в nginx proxy_pass вызывает проблему типа MIME - PullRequest
1 голос
/ 15 апреля 2020

Я гуглил топи c в длину весь вечер и, похоже, не могу понять этого. У меня следующая ситуация: у меня в сети есть NAS (имя хоста MYHOSTNAME), и у меня также есть обратный прокси nginx на другой машине. Я хочу использовать переменную для раздела proxy_pass моего файла конфигурации, чтобы в случае, когда NAS отключен при запуске прокси, он не обрабатывал sh. В основном:

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)

Я в недоумении от новых идей о том, как заставить это работать ... Заранее спасибо, ребята, любой Помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 17 апреля 2020

Не думаю, что могу объяснить технические детали того, почему, но, включив отладку в 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;
    }

Надеюсь, это однажды поможет кому-то еще и избавит вас от головной боли.

...