У меня есть приложение, работающее за nginx и, очевидно, не работающее так, как хотелось бы. Поэтому я попытался воспроизвести его в своей локальной среде.
Фон Веб-приложение работает нормально само по себе и возвращает /static/index.html в качестве страницы по умолчанию. Например, при доступеhttp://localhost:7777/возвращает /static/index.html и все работает отлично. {http://localhost:7777/static/index.html}
Проблема
Когда я пытаюсь получить доступ к тому же приложению через прокси, это не работает. При доступе
http://localhost/app
{localhost - это имя сервера по умолчанию в nginx} приложение возвращает как обычно /static/index.html и перенаправляется tp http://localhost/static/index.html
и возвращает 404.
Желаемая ситуация
Даже если приложение находится за прокси, я должен иметь возможность увидеть приложение. Вместо http://localhost/static/index.html
URL должно быть похоже наhttp://localhost/localhost:7777/static/index.html
nginx.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location /app/ {
proxy_pass http://localhost:7777/;
proxy-redirect off;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_buffering off;
client_max_body_size 0;
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_header Set-Cookie;
proxy_pass_header P3P;
}
Есть идеи, как этого можно добиться?
решение1
Если вы ограничите проксирование, согласно вашему nginx.conf, расположением /app/, вы не должны удивляться, что /static/index.html не будет проксироваться. Добавьте
proxy_pass http://localhost:7777/;
на место и посмотреть, что произойдет дальше.