nginx:首次访问时将 http 重定向到 https 失败

nginx:首次访问时将 http 重定向到 https 失败

我在 NGINX 上重定向到 HTTPS 时遇到了一个奇怪的问题

  • 当用户http第一次访问时,会报告 ERR_FAIL_CONNECTION。
  • 当用户访问时https,它就起作用了。
  • 然后用户关闭浏览器,再次启动浏览器,并转到 http,重定向正在运行!!

这是我的 nginx 80 端口配置

server{
      listen 80 default_server;
      listen [::]:80 default_sever;
       server_name mydomain;
       location /{
       return 301 https://$host$request_uri;
      }
}

我已检查服务器是否正在监听端口 80 和 443,并且防火墙处于非活动状态。并且 curl 适用于 http 和 https。

nmap 结果还显示端口 80 和 443 已打开:

 PORT     STATE SERVICE
 80/tcp   open  http
 443/tcp  open  https

这是我的 http 的 curl 信息:

* Connected to mydomain (my.IP.num.ber) port 80 (#0)
> GET / HTTP/1.1
> Host: mydomain
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Server: nginx/1.10.3 (Ubuntu)
< Date: Thu, 05 Apr 2018 07:39:46 GMT
< Content-Type: text/html
< Content-Length: 194
< Connection: keep-alive
< Location: https://mydomain/
<
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.10.3 (Ubuntu)</center>
</body>
</html>
* Connection #0 to host mydomain left intact

因此,只有当用户“第一次”通过 http 访问网站时,重定向才有效。有什么办法可以解决这个问题吗?

答案1

这可能是浏览器的问题,第二次尝试时它成功了。当我将 http 重定向到 https 时,我总是尽量简洁

server{
   server_name mydomain;
   return 301 https://$host$request_uri;
}

相关内容