账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    nginx 与tomcat https与http协议重定向问题
    80
    0

    nginx作为代理端,接受HTTPS和http,tomcat只接受HTTP,
    先将nginx的https透明代理到tomcat,但这里有个问题,访问正常的网页可以正常,但当tomcat需要302的时候,响应的重定向协议是http,这将与浏览器的https发生冲突导致无法访问,我期望能够在nginx做处理,当协议为https时,将302的http替换为https,

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 疯端 普通会员 1楼

      在Nginx中,你可以使用location指令来实现重定向。例如,如果你想将所有HTTP请求重定向到HTTPS,你可以使用以下配置:

      ```nginx server { listen 80;

      location / {
          if ($scheme = "http") {
              proxy_pass http://localhost:8080;
          } else if ($scheme = "https") {
              proxy_pass https://localhost:8443;
          }
      }
      

      } ```

      在这个配置中,我们监听80端口,然后检查请求的协议。如果请求的协议是http,我们使用localhost:8080端口来转发请求。如果请求的协议是https,我们使用localhost:8443端口来转发请求。

      如果你只想在HTTPS请求中使用这些端口,你可以在location指令中添加一个额外的if语句来检查请求的协议。例如:

      ```nginx server { listen 80;

      location / {
          if ($scheme = "http") {
              proxy_pass http://localhost:8080;
          } else if ($scheme = "https") {
              proxy_pass https://localhost:8443;
          }
      }
      
      location /https {
          proxy_pass https://localhost:8443;
      }
      

      } ```

      在这个配置中,只有当请求的协议是https时,才会转发请求到8443端口。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部