我正在使用 Ubuntu 和 Nginx。
我的网站受 SSL 保护托管。
如果我在浏览器中输入“https”中没有“s”的域名,则会重定向到“https”。但如果我输入域名的 IP 地址,它不会重定向到“https”。它只会显示在地址栏中“http://xxx.xxx.xxx.xxx”
我是这样想的:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
可以解决这个问题,买它不可以。
你的新手...
答案1
尝试使用 IP 地址作为 server_name 创建另一个服务器部分 - 您最好使服务器名称也明确表示您的域名(而不是 _)。然后从新服务器部分(IP 地址)重定向到域名(与端口 80 执行的操作相同)。
例如:
server {
server_name 12.34.56.178;
listen 80;
listen 443 ssl;
listen [::]:80;
listen [::]:443 ssl;
return 301 https://example.com;
}
...并且不要忘记重新启动 nginxsystemctl restart nginx
您是否尝试过这样并重新启动浏览器来测试它?当存在浏览器缓存时,有时很难调试内容。因此我更喜欢使用wget -O- http://12.34.56.78
orcurl -o- http://12.34.56.78
进行测试。