我有 Tomcat 6 在路径“be”上运行 Web 应用程序。Spring Security 用于登录过程。登录 URL 是/console/login
,它在登录后重定向到/console/customer
。我使用 https 作为login
url,使用 http 作为customer
URL。我没有在任何 spring 配置文件中指定 servlet 路径。一切正常,并在访问/be/console/login
正确的重定向(到/be/console/customer
)后收到。
现在我想要一个代理。我将 Nginx 配置为转发https://localhost
到https://<someip>:9443
http,从端口 80 转发到端口 9080。
问题是 Nginx 正在向浏览器返回无效的重定向。相反/be/console/customer
,它返回/be/be/console/customer
. Servlet 路径被添加到 URL 中两次。
那第二个“存在”怎么可能被删除?
谢谢。
Nginx 配置:
server {
listen 443 ssl;
server_name localhost;
ssl on;
ssl_certificate C:\jc\\nginx\\tc\selfsigned.cer;
ssl_certificate_key C:\jc\\nginx\\tc\private.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_redirect off;
proxy_pass https://<some ip>:9443;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ /.+ {
proxy_redirect off;
proxy_pass https://<some ip>:9443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
server {
listen 80;
server_name localhost;
access_log logs/access.log;
error_log logs/error.log;
location / {
proxy_redirect off;
#server_name_in_redirect off;
proxy_pass http://<some ip>:9080;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ /.+ {
proxy_redirect off;
proxy_pass http://<some ip>:9080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}