Пути прокси-сервера Nginx

Пути прокси-сервера Nginx

Я пытаюсь проксировать другой веб-сервер на 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;

Связанный контент