He buscado en Google el tema extensamente toda la noche y parece que no puedo entender esto. Mi situación es la siguiente: tengo un NAS en mi red (nombre de host MYHOSTNAME) y también tengo un proxy inverso nginx, en otra máquina. Quiero usar una variable para la sección proxy_pass de mi archivo de configuración para que, en caso de que el NAS esté fuera de línea cuando se inicie el proxy, no se bloquee. Básicamente:
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/;funciona bien Pero lo siguiente:
location /MYNAS { set $VAR_HOSTNAME MYHOSTNAME; resolver 192.168.xx; 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/;me da problemas La página web carga una página vacía, y en la consola del navegador, puedo ver:
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)No tengo nuevas ideas sobre cómo hacer que esto funcione... Gracias de antemano chicos, cualquier ayuda sería muy apreciada.
No creo que pueda explicar los detalles técnicos de por qué, pero al activar la depuración en nginx y compararla con el caso de uso que funciona, finalmente me di cuenta de que necesitaba anular la pieza /MYNAS/. La clave es la línea de reescritura a continuación:
location /MY_NAS/ { set $MY_NAS http://MYNAS:1234; resolver 192.168.xx; 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; }Con suerte, eso ayudará a alguien más algún día y te ahorrará el dolor de cabeza.