【问题标题】:NGINX Redirect all to https except one directoryNGINX 将除一个目录外的所有重定向到 https
【发布时间】:2015-09-21 14:33:41
【问题描述】:

我已经搜索了 stackoverflow 以寻找答案和建议的所有内容,我尝试过但没有成功。

我的网站将用户重定向为始终使用 SSL (https)。但是,我有一个不能在 SSL 上运行的聊天应用程序,因为它没有使用 ssl url 获得许可。我无法让开发人员更新许可证,但这是另一回事。

因此,我只允许非 ssl (http) 访问位于名为 chat 的子目录中的聊天应用程序。

这是我的配置,但它不起作用:

server {
  listen 80;

  location / {  # the default location redirects to https
      return 301 https://$server_name$request_uri;
  }

  location /chat/ {}  # do not redirect requests for chat location
  # ...
}


server {
  listen 443;

  location /chat/ {  # redirect https iframe requests to http server
      return 301 http://$server_name$request_uri;
  }
  # ...
}

我尝试了很多组合,包括 302 而不是 301(在尝试此操作时清除我的浏览器缓存)、斜杠与非斜杠。似乎没有任何效果。

这在我更新 SSL 块以更安全并获得 A+ 标记之前,这曾经可以工作,这太疯狂了。不确定我删除或添加的内容可能会影响到这一点。

最后,如果我清除浏览器缓存,然后直接转到

http://example.com/chat/test.htm

,它不会重定向哪个是正确的。但是,一旦我转到https://example.com,然后转到http://example.com/chat/test.htm,浏览器就会说有无穷无尽的重定向。

有什么想法吗?

【问题讨论】:

  • 您能出示您的日志吗?你在浏览器的“私人窗口”里试过了吗?
  • uzsolt,我能够发现问题,请参阅我的答案。谢谢。

标签: redirect ssl nginx https


【解决方案1】:

看起来我在我的 SSL 块中添加了 HSTS 标头,它告诉浏览器强制使用 SSL。这导致了无休止的重定向。我将 HSTS 指令的年龄更改为 0,因此希望这会重置我的用户浏览器。

【讨论】:

    猜你喜欢
    • 2012-07-14
    • 2012-04-02
    • 1970-01-01
    • 2017-07-09
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2014-10-16
    相关资源
    最近更新 更多