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/;
위치로 이동한 다음 무슨 일이 일어나는지 확인하세요.