0

我有 Tomcat 6 在路径“be”上运行 Web 应用程序。Spring Security 用于登录过程。登录 URL 是/console/login,它在登录后重定向到/console/customer。我使用 https 作为loginurl,使用 http 作为customerURL。我没有在任何 spring 配置文件中指定 servlet 路径。一切正常,并在访问/be/console/login正确的重定向(到/be/console/customer)后收到。

现在我想要一个代理。我将 Nginx 配置为转发https://localhosthttps://<someip>:9443http,从端口 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;
    }
}
4

1 回答 1

0

此配置正在生产中工作:

location /demo/ {
    proxy_pass  http://localhost:8080;
    proxy_redirect     off;

    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_request_headers on;

    client_max_body_size       10m;
    client_body_buffer_size    128k;

    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;

    proxy_buffer_size          4k;
    proxy_buffers              4 32k;
    proxy_busy_buffers_size    64k;
    proxy_temp_file_write_size 64k;
}
于 2012-06-16T22:21:36.277 回答