我有以下服务器configuration:
server { listen 80; server_name default; return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name default; root /home/forge/default/public; ... and so it continues
我也有两个域名, test.com和example.com 。 他们都指向服务器的IP地址。 如果我去test.com ,它会被redirect到https,但是如果我去了example.com ,它会被redirect到test.com的https版本,而不是https的https版本。 为什么会这样呢? 我很新的服务器configuration。 在其他服务器故障的答案我只发现使用$hostvariables,但似乎并没有工作。
我只是有同样的问题,实际上浏览器caching是问题!
只需要注意一下:检查redirect的最佳解决scheme之一(不caching)将从命令行curl服务器:
curl -I http://my-server.com
关于浏览器caching,清除整个caching – refreshyourcache.com – 将工作,但它有点矫枉过正! 另一种确保浏览器不使用caching的方式是请求稍有不同的url,即:
http://my-server.com?randomString
另一点我想在读取server_name nginx文档后引用:感觉接受多个域名的推荐方法是使用空的server_name ""而不是default ,即对于你的configuration示例:
server { listen 80; server_name ""; return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name ""; root /home/forge/default/public; ... and so it continues
但请有人,纠正我,如果我错了! 🙂