동일한 호스트/포트에서 여러 개의 웹 응용 프로그램을 역방향 프록시로 사용하려고 시도하고 있습니다. 서로 다른 경로를 사용하여 응용 프로그램을 구분합니다. 예를 들어, -다른 컨텍스트 경로를 사용하는 Nginx 리버스 프록시
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
proxy_set_header X-Forwarded-Ssl $proxy_x_forwarded_ssl;
proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port;
upstream app1 {
server 192.168.0.1:8080;
}
upstream app2 {
server 192.168.0.2:8080;
}
server {
server_name my-application-server;
listen 80;
location /app1/ {
proxy_pass http://app1/;
}
location /app2/ {
proxy_pass http://app2/;
}
}
이 올바르게 내 응용 프로그램에 개별 페이지에 대한 요청을 프록시합니다 :
내의 nginx의 설정은 다음과 같습니다 http://my-application-server/app1/context/login
, 내 앱의 하이퍼 링크는 경로의 일부인 app1
이 누락되어 깨졌습니다. 예 : 그들은 http://my-application-server/app1/context/login-success
보다는 http://my-application-server/context/login-success
으로 안내합니다.
proxy_redirect
및 rewrite
에 다양한 값을 추가하려고 시도했지만이 링크가 올바르게 렌더링되도록 설득 할 수는 없습니다.
내 응용 프로그램은 Tomcat에서 실행되는 java webapp입니다. 나는 webapp의 컨텍스트 경로를 변경할 수있는 다른 솔루션을 보았지만, nginx가 nginx 경로에 대해 알도록 구성해야하는 바람둥이없이 요청을 투명하게 프록시 처리해야합니다.
답변을 주셔서 감사합니다. 쉬운 해결책은 없지만 유감스럽게도 제 신청서에 대한 규칙을 이해하기 시작했습니다. – olambert