我最近安装了 LetsEncrypt SSL 证书,它在我的主域上运行良好,但我还有其他设置为虚拟主机的子域。但是,所有到子域的流量现在都重定向到 https,这导致浏览器提示隐私问题。
我的主域 nginx 配置如下:
server { │
listen 80; │
server_name domain.com www.domain.com; │
return 301 https://$server_name$request_uri; │
} │
│
server { │
# Basic configuration │
listen 443 ssl; │
server_name domain.com www.domain.com; │
passenger_enabled on; │
passenger_app_env development; │
root /home/user/path_to_app/public; │
│
# Required for LetsEncryptSSL certificate │
location ~ /.well-known { │
allow all; │
} │
│
# Include SSL config │
include snippets/ssl-domain.com.conf; │
include snippets/ssl-params.conf; │
}
我的子域配置是这样的:
server { │
#listen 80 default_server; │
server_name app1.domain.com; │
passenger_enabled on; │
passenger_app_env development; │
root /home/app1/app1/public; │
}
最佳答案
我认为这样做的唯一机会是将 server_name
定义为第一个括号中的正则表达式。
也就是像这样的东西
server {
listen 80;
server_name ^(www\.domain\.com|domain\.com)$;
return 301 https://$server_name$request_uri;
}
关于ssl - 如何从 nginx 上的 https 重写中排除子域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40995050/