您在问题中显示的内容看起来像一些nginx模板,而不是真正的nginx配置。不管怎样,假设您的域是example.com
.
server {
listen 80;
server_name www.example.com example.com;
return 301 https://$server_name$request_uri;
}
此块将重定向普通HTTP请求(
http://example.com/...
,
http://www.example.com/...
) 到
https://www.example.com/...
, 这个
$server_name
内部nginx变量的值为中给定的第一个字符串
server_name
指令参数,
www.example.com
在这种情况下。此外,如果它是在端口80上侦听的唯一定义的服务器块,它将处理此端口上的任何传入请求并将其重定向到
https://www.example.com/...
无论有什么价值
Host
此请求的HTTP标头(如果存在)。
server {
listen 443 ssl;
server_name www.example.com;
...
}
此块将处理传入的请求
www.example.com
端口443上的域,即。
https://www.example.com/...
请求,但与前一个块一样,如果它是侦听端口443的唯一已定义的服务器块,则它将处理任何传入的SSL请求,无论值是什么,都具有
Host
请求的HTTP标头。如果您为这两个项目颁发了证书
example.com
和
www.example.com
域,它将处理任何
https://example.com/...
没有任何错误的请求,如
Certificate mismatch 或类似的。
总而言之,看起来你进入了http://example.com
在Firefox中(并获得301https://www.example.com
重定向)和https://example.com
在Chrome中(并获得了无任何重定向的响应内容)。无论如何,这并不能解释您在Firefox中出错的原因,但描述了使用此配置的nginx行为。进来http://example.com
在Chrome地址栏中,您将被重定向到https://www.example.com
. 进来https://example.com
在Firefox地址栏中,您将收到没有任何重定向的网站内容。在incognito窗口中执行此操作,以避免可能的缓存重定向或内容。