繁体   English   中英

NGINX将所有重定向到https(一个目录除外)

[英]NGINX Redirect all to https except one directory

我已经搜索了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 ,浏览器就会显示无休止的重定向。

有任何想法吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM