nginx 未将 302 重定向响应重定向至 https

nginx 未将 302 重定向响应重定向至 https

你好,我已将 nginx 设置成将所有 80 端口请求重定向为使用 https:

server {
    listen 80;
    ...
    return 301 https://$host$request_uri;
}

然后我将所有 https 请求路由到我的应用程序服务器

server {
    listen 443 ssl;
    ...
    location / {
        proxy_pass http://localhost:8080;
        proxy_redirect off;
        ...
    }
}

Location除了那些带有标头的 302 响应(例如),其他一切都按预期运行Location: http://localhost/somepage,我期望它们被重定向到使用 https(因为它们是通过端口 80 访问页面的),但是,我得到了一个错误(net::ERR_FAILED)。奇怪的是,直接在浏览器中输入这些 URL(例如http://localhost/somepage) 按预期工作(即重定向使用 https 并返回页面),因此只有 URLLocation没有被 nginx 重定向,请帮忙。

答案1

尝试在代理末尾添加一个斜杠,即proxy_pass http://localhost:8080/;我过去遇到过问题,即位置直接附加到 URL,例如https://localhostSomepage而不是https://localhost/Somepage。希望这会有所帮助。

相关内容