你好,我得到了这个默认文件
server {
listen 80 default_server;
listen 443 default_server;
listen [::]:80 default_server;
listen [::]:443 default_server;
server_name _;
return 444;
}
这将捕获所有内容...在同一个文件夹(已启用站点)中,我得到了我的 domain.com 文件
server {
listen 80;
server_name my.domain.com;
location /.well-known/acme-challenge {
default_type "text/plain";
root /storage/webserver/certbot;
}
#Forces all other requests to HTTPS
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
server_name my.domain.com;
## SSL STUFF ##
root /path/to/root;
index index.html index.php;
location / {
try_files $uri $uri/ $uri.html;
}
### Site config
}
如果我保留默认禁用(删除)并转到 my.domain.com,我会看到我的页面。现在,如果我添加默认文件,我会从 Nginx(已关闭)获得 444。为什么……?
编辑:经过一些测试,我发现问题出在 listen 443 default_server; 部分,它会捕获每个 https 请求,为什么?我的域名和 listen 443 被拦截了!
答案1
根据这个答案https://serverfault.com/a/841646/459947
我必须向 catch_all 添加证书。使用自签名证书执行此操作后,我的 IP 出现 444(正确,因为它没有阻止)和 SSL 警告,在 HTTPS 上接受我的 IP 时出现 444。所以这对我来说很有效,我希望有更好的方法来做到这一点。
server {
listen 80 default_server;
listen 443 ssl default_server;
server_name _;
ssl_certificate <path to cert>
ssl_certificate_key <path to key>
return 444;
}
根据https://serverfault.com/a/593668/459947你可以做一个如果在块上检查域是否正确。我的意思是,我猜它有效,但我不想将它添加到每个块中。如果你认为这是一个更好的主意,请告诉我。