我们希望将something.custom.com
http请求重定向到https,并保持其他请求不变。尝试下面的东西,但它没有工作:Nginx:将自定义域名http请求重定向到https
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name _;
if ($host ~ ^(.*?)\.custom\.com) {
return 301 https://$host$request_uri;
}
root /www/example/public;
}
server {
listen 443 default_server ssl;
listen [::]:443 default_server ipv6only=on ssl;
server_name _;
root /www/example/public;
}
我的设置有什么问题吗?
这将重定向到域custom.com到HTTPS版本的所有请求。如果您的目标是特定的子域,请指定服务器名称。例如'server {listen 80; server_name something.custom.com; return 301 https://something.custom.com;}' –
但我只想重定向自定义域。如果我喜欢你说的话,那么我需要为其他非自定义域设置另一个条目,比如'server {listen 80; server_name _}'这不起作用。 Nginx抱怨多个入口监听端口80.你如何解决这个问题? –
只要Nginx在单独的服务器块中没有'server_name'冲突,就不应该有多个'listen 80;'指令的问题。作为答案,请参阅下面的临时解决方案。 –