如何配置NginX:一个域使用SSL,另一个域不使用SSL
我在使用NginX的单个主机上有两个域:如何配置NginX:一个域使用SSL,另一个域不使用SSL,ssl,nginx,Ssl,Nginx,我在使用NginX的单个主机上有两个域: 在80和443端口上使用SSL(Python后端)的完整服务器 只需重定向到另一个域,无需SSL 它们在不同的.conf文件的server部分中进行了描述: 一, 二, 如果我只为第二个域设置了80个端口,那么它不会重定向HTTPS连接 但是,如果我为第二个域设置443端口(不带SSL),那么端口443对第一个域不起作用,我会得到: ssl握手时,在侦听ssl端口的服务器中未定义“ssl_证书” 问题是: 为什么第二个重定向服务器会影响第一个,如果它们有
.conf
文件的server
部分中进行了描述:
一,
二,
如果我只为第二个域设置了80个端口,那么它不会重定向HTTPS连接
但是,如果我为第二个域设置443端口(不带SSL),那么端口443对第一个域不起作用,我会得到:
ssl握手时,在侦听ssl端口的服务器中未定义“ssl_证书”
问题是:
回答你的问题:
listen443SSL
到第二个域,并使ssl\u证书
语句全局化,或在第二个服务器
块中重复它们 为什么第二个重定向服务器会影响第一个,如果它们有不同的域名
因为SSL握手和连接是在浏览器发送HTTP请求之前建立的,而nginx不知道请求服务器的名称。在您的情况下,对于所有端口443请求,请求将转到默认服务器块(第二个服务器块),找不到ssl_证书配置,并发出投诉
如果您将ssl\U证书声明设置为全局,那么它将正确地重定向到第一个服务器块。谢谢,我找到了!还有一个问题:当使用具有不同SSL的多个域时,这种行为会导致问题吗?据我所知,如果NginX在发送证书之前没有检查域,它可能会发送错误的证书,这不适合当前域,客户端将拒绝连接。。。对于如此长的延迟,很抱歉,您可以将所有SSL证书捆绑到一个证书中,或者使用具有多个名称的SSL证书,请参见。还可以查看服务器名称指示(SNI)
server {
listen 80;
listen 443 ssl;
server_name verni-verni.ru www.verni-verni.ru;
# Certificates
ssl_certificate /var/www/SSL/ca.crt;
ssl_certificate_key /var/www/SSL/private.key;
# Logs
...
# Static Content
...
# Reverse Proxy
location / {
...
}
}
server {
listen 80;
# listen 443;
server_name gdeclient.ru;
rewrite ^/(.*)$ http://... redirect;
}