Dan*_*iel 7 nginx lets-encrypt certbot
有人可以解释为什么 Certbot 使用以下重定向配置
server {
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name example.com;
listen 80;
return 404; # managed by Certbot
}
Run Code Online (Sandbox Code Playgroud)
而不是简单地这个?
server {
server_name example.com;
listen 80;
return 301 https://$host$request_uri;
}
Run Code Online (Sandbox Code Playgroud)
server_name
基本上说这个配置只适用于 example.com,所以$host
永远不会有什么不同,或者我错过了什么?
Håk*_*ist 11
我认为这里的问题是,如果这恰好是该地址/端口组合的第一个,并且该地址/端口server
没有其他参数,则这将成为默认服务器,充当未知主机的包罗万象。server
default_server
server
请参阅请求处理文档以获取概述,以及有关默认服务器行为的一些细节的listen
文档:
该
default_server
参数(如果存在)将导致该服务器成为指定对的默认服务器address:port
。如果没有指令具有该default_server
参数,则具有该对的第一个服务器address:port
将是该对的默认服务器。