
Estou tentando fazer proxy de outro servidor web, em localhost:20000, do nginx. Isso funciona:
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
}
No entanto, se eu mudar para:
location /myApp {
proxy_set_header..
Só consigo carregar o arquivo index.html, todos os outros .css e .js 404. Posso ver nos cabeçalhos do navegador que a solicitação desses arquivos está indo para mysite.com/jquery.js em vez de mysite.com/myApp /jquery.js, então acho que eles não estão sendo proxy nesse ponto, e é por isso que eles 404. Os caminhos para esses URLs são codificados relativamente (). Como faço para que isso funcione. Não consigo alterar os caminhos nos arquivos index.html com proxy. Obrigado
Editar. O servidor web backend é thttpd e é antigo. Isso afetaria o host set_head? Desculpe, não estou muito familiarizado com o funcionamento dessa camada.
Responder1
Primeiro de tudo, location /myApp {}
deve estar acima de location {}
. Segundo, o que provavelmente é mais importante, você pode servir arquivos estáticos diretamente, atribuindo root
e adicionando adequadamente uma seção como esta:
location ~* \.(css|jpg|png|gif|jpeg|js|ico|swf|mp3)$ { break; }
Se você quiser modificar o URI, isso pode ser útil, dentro location / {}
da seção:
rewrite ^/(.*)$ /myApp/$1 break;