
Я пытаюсь проксировать другой веб-сервер на localhost:20000 из nginx. Это работает:
location/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:20000
}
Однако если я изменю его на:
location /myApp {
proxy_set_header..
Я могу загрузить только файл index.html, все остальные .css и .js 404. Я вижу в заголовках браузера, что запрос этих файлов идет на mysite.com/jquery.js вместо mysite.com/myApp/jquery.js, поэтому я предполагаю, что они не проксируются в этот момент, поэтому они 404. Пути к этим URL-адресам закодированы относительно (). Как мне заставить это работать? Я не могу изменить пути в проксируемых файлах index.html. Спасибо
Редактировать. Внутренний веб-сервер — thttpd, и он древний. Повлияет ли это на хост set_head? Извините, я не очень хорошо знаком с тем, как работает этот уровень.
решение1
Во-первых, location /myApp {}
должно быть выше location {}
. Во-вторых, что, вероятно, более важно, вы можете обслуживать статические файлы напрямую, правильно назначив root
и добавив раздел, например так:
location ~* \.(css|jpg|png|gif|jpeg|js|ico|swf|mp3)$ { break; }
Если вы хотите изменить URI, это может быть полезно, внутри location / {}
раздела:
rewrite ^/(.*)$ /myApp/$1 break;