server_name 不匹配时 Nginx 下降
Nginx drop when server_name does not match
我有两个虚拟主机:一个在 domain.tld
端口 80 上,另一个在 sub.domain.tld
端口 443 上,并启用了 SSL。我在我的 DNS 服务器上添加了一个 CNAME 条目,将我的 sub
子域重定向到 domain.tld.
。
一切都按预期工作,但进入 http://sub.domain.tld
与进入 http://domain.tld
的效果相同,而 https://domain.tld
与进入 https://sub.domain.tld
的效果相同。我怎样才能防止这种情况?
我的配置:
server {
listen *:443;
listen [::]:443;
server_name www.sub.domain.tld;
ssl on;
ssl_certifiate ...;
ssl_certifiate_key ...;
root /var/www/sub.domain.tld;
...
}
server {
listen *:80;
listen [::]:80;
server_name www.domain.tld;
root /var/www/domain.tld;
...
}
如果这些是您唯一的 server
块,那么它们也是您事实上的 默认服务器 分别用于端口 443 和端口 80 的块。详见[本文档][http://nginx.org/en/docs/http/server_names.html]。
如果你不想这样,你需要声明一个默认服务器块。极简主义定义可能是:
server {
listen 80 default_server;
listen 443 ssl default_server;
ssl_certifiate ...;
ssl_certifiate_key ...;
return 403;
}
启动Nginx服务需要ssl证书,但可以是任何证书。此外,ssl_certifiate
指令是继承的,因此您可以将默认语句放在 http
块中。
使用return 444;
关闭连接,没有任何反应。
我有两个虚拟主机:一个在 domain.tld
端口 80 上,另一个在 sub.domain.tld
端口 443 上,并启用了 SSL。我在我的 DNS 服务器上添加了一个 CNAME 条目,将我的 sub
子域重定向到 domain.tld.
。
一切都按预期工作,但进入 http://sub.domain.tld
与进入 http://domain.tld
的效果相同,而 https://domain.tld
与进入 https://sub.domain.tld
的效果相同。我怎样才能防止这种情况?
我的配置:
server {
listen *:443;
listen [::]:443;
server_name www.sub.domain.tld;
ssl on;
ssl_certifiate ...;
ssl_certifiate_key ...;
root /var/www/sub.domain.tld;
...
}
server {
listen *:80;
listen [::]:80;
server_name www.domain.tld;
root /var/www/domain.tld;
...
}
如果这些是您唯一的 server
块,那么它们也是您事实上的 默认服务器 分别用于端口 443 和端口 80 的块。详见[本文档][http://nginx.org/en/docs/http/server_names.html]。
如果你不想这样,你需要声明一个默认服务器块。极简主义定义可能是:
server {
listen 80 default_server;
listen 443 ssl default_server;
ssl_certifiate ...;
ssl_certifiate_key ...;
return 403;
}
启动Nginx服务需要ssl证书,但可以是任何证书。此外,ssl_certifiate
指令是继承的,因此您可以将默认语句放在 http
块中。
使用return 444;
关闭连接,没有任何反应。