我正在设置一个带有SSL的Nginx服务器。
使用SSL的域为www.mydomain.example
我想重定向来自以下位置的所有请求:http://mydomain.example
、http://www.mydomain.example
和https://mydomain.example
至https://www.mydomain.example
我当前设置了以下服务器块:
server{
listen 443 ssl;
root /www/mydomain.example/;
ssl_certificate /ssl/domain.crt;
ssl_certificate /ssl/domain.key;
.
.
.
}
server{
listen 80;
server_name mydomain.example;
return 301 https://www.mydomain.example$request_uri;
}
server{
listen 80;
server_name www.mydomain.example;
return 301 https://www.mydomain.example$request_uri;
}
server{
listen ssl 443;
server_name mydomain.example;
return 301 https://www.mydomain.example$request_uri;
}
目前这个方法不起作用,但我不明白为什么不起作用。我可以得到HTTP -〉HTTPS工作或no-www to -〉www工作的组合,但如上所述将它们混合是不起作用的。
8条答案
按热度按时间nimxete21#
如果您的SSL证书不支持非www域,则SSL重定向将不起作用。配置是正确的,但可以减少到只有1个重定向服务器
也不要忘记重新加载Nginx
sudo service nginx reload
hfsqlsce2#
我迟到了,但你可以这样做
或者您可以将
return 301 https://www.$server_name$request_uri;
替换为rewrite ^ http://www.$server_name$request_uri? permanent;
,两者都可以工作。你也需要在谷歌网站管理员设置更好的搜索引擎优化。
a14dhokn3#
这对HTTP到HTTPS重定向有效,
bttbmeg04#
使用重写将所有HTTP流量发送到HTTPS:
此配置将端口80作为IPv4和IPv6以及任何主机名的默认服务器进行侦听。return语句将返回301永久重定向到同一主机和请求URI上的HTTPS服务器。
rqmkfv5c5#
6l7fqoea6#
请在你的档案上加上两件事。
要粘贴到顶部的代码:
要粘贴到底部的代码:
Source
kmb7vmvb7#
我试图通过重定向请求URI到
HTTPS
来修复这个问题,如果它是用HTTP
方案请求的话。当我们在浏览器的搜索栏中输入域名时,它默认使用
HTTP
方案进行请求,浏览器的这种行为不是nginx处理的,而是可以手动处理的,我们需要通过添加error_page 497 https://$server_name$request_uri;
来处理497状态码。497表示什么,何时出现?
1mrurvl18#
我不明白为什么HTTPx 1 e0f1x不能重定向到HTTPx 1 e1f1x。我已经像其他人一样根据https://nginx.org/en/docs/http/configuring_https_servers.html配置了它,即使在使用
nginx -s reload && sudo systemctl restart nginx
重新启动服务器之后/etc/nginx/可用站点/example.com
但即使我使用的是最新的浏览器,从HTTP到HTTPS的重定向只适用于最新的隐身窗口:
但不与最新的隐身窗口,即使在清除缓存和硬重新加载:
使用Brave和Chrome浏览器时,它只会从/var/www/html/index. nginx-debian. html加载默认的HTTP页面“欢迎使用nginx!”