Nginx

為什麼 Nginx 在不存在的子域中呼叫無效證書只是為了重定向到 404?

  • November 9, 2017
  1. 有兩個伺服器塊。
  2. default_server塊內httpnginx.conf
伺服器 {
伺服器名稱 _;
聽 80 default_server;
聽 [::]:80 default_server ipv6only=on;
聽 443 default_server;
返回404;
}
包括/etc/nginx/sites-enabled/*;
  1. 內部的工作域/網站塊sites-enabled
伺服器 {
聽 80;
聽443;
server_name example.com;
返回 301 https://www.$server_name$request_uri;
}

伺服器 {
聽 80;
聽 443 ssl;
根 /var/www/example.com/htdocs/;
索引 index.html 索引.htm;

server_name www.example.com;
}

(我有這個設置將所有非 www 重定向到 www 並將所有 http 重定向到 https)

  1. 我的域有一個非 www 和 www 的證書。Nginx 出於某種原因正在呼叫任何子域而不是給出預設網站找不到/ERR_CONNECTION_RESET/錯誤。
  2. 例如,如果我去https://asdf.example.com/Nginx 呼叫它並且瀏覽器告訴您它是不安全的 SSL 證書,那麼您無論如何都接受它並獲得 404 頁面。
  3. 如何跳過無效證書消息跳轉到 404 頁面,或者如何直接跳轉到“找不到頁面”而不是 404?例如,像 go tohttps://asdf.serverfault.com它不會給出 404,它會給出ERR_CONNECTION_RESET/. 我希望我的伺服器上所有不存在的子域和域都使用它。

**更新:**難道我的所有ssl_certificate行也都添加到了主 http 塊中?如果是這樣,仍然無法解決 call forERR_CONNECTION_RESET而不是 404 上給出的範例6.

如果您直接打開https://asdf.example.com,則瀏覽器將解析asdf.example.com為 IP 地址,然後使用HTTPS協議連接到它。如果伺服器(具有檢索到的 IP)正在偵聽443埠並且沒有返回該域的證書,或者一個無效的證書,那麼瀏覽器將在完成請求之前警告您有關不安全的協議(例如顯示404錯誤)。

https://asdf.serverfault.com出現連接錯誤,因為此子域未註冊,它沒有 IP 地址。這就是您看到此錯誤的原因。如果您想確保asdf.example.com返回連接錯誤而不是 ssl 警告,請確保此子域未註冊並且沒有萬用字元 (*) 記錄example.com

引用自:https://serverfault.com/questions/882736