【问题标题】:Request is not redirected, when passes nginx请求没有被重定向,当通过 nginx
【发布时间】:2013-08-07 00:23:30
【问题描述】:

我们有 Grails 应用程序在 Tomcat 上运行。 Nginx 将所有对 80 端口的请求重定向到 8080。 为了我们应用的安全性,我们使用 Spring Security

所以问题是:当用户成功登录应用程序时,它必须重定向到另一个页面,但它没有发生。

在 Chrome 浏览器中没有任何反应,在 Firefox 页面中显示“损坏的内容错误”。

直接访问8080端口的应用没有问题。 当我使用 jsessionid 手动删除 cookie 时,问题也消失了,但在第一次重定向后它再次出现并且问题在同一个地方。

nginx 配置:

 server {
    limit_conn addr 10;
    listen externalIp:80;
    server_name serverName;
    root /var/ut/;

    location / {
            proxy_pass http://127.0.0.1:8080/;
            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;
    }

}

【问题讨论】:

  • 配置看起来不错。您可以将 127.0.0.1 替换为 localhost。尝试使用听 80;而不是外部IP:80。如果这不起作用,请检查您的 nginx 版本。

标签: java grails nginx spring-security


【解决方案1】:

我修复了它,但不是通过 nginx 配置。

我已将此代码添加到身份验证控制器的登录操作中:

    HttpSession session = request.getSession(false);
    if (session!=null && !session.isNew()) {
        session.invalidate();
    }

当我的请求通过 nginx 时,我真的不知道为什么会出现这个问题。 但这是今天的修补程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 2019-12-16
    • 1970-01-01
    相关资源
    最近更新 更多