
你好,我得到了這個預設文件
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 請求,為什麼?我的網域被封鎖並監聽 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你可以做一個如果在區塊上檢查網域是否正確。我的意思是我猜它有效,但我不想將其添加到每個區塊中。我認為這是一個更好的主意,請告訴我。