Nginx
為什麼 Nginx 在不存在的子域中呼叫無效證書只是為了重定向到 404?
- 有兩個伺服器塊。
default_server
塊內http
塊nginx.conf
:伺服器 { 伺服器名稱 _; 聽 80 default_server; 聽 [::]:80 default_server ipv6only=on; 聽 443 default_server; 返回404; } 包括/etc/nginx/sites-enabled/*;
- 內部的工作域/網站塊
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)
- 我的域有一個非 www 和 www 的證書。Nginx 出於某種原因正在呼叫任何子域而不是給出預設網站找不到/
ERR_CONNECTION_RESET/
錯誤。- 例如,如果我去
https://asdf.example.com/
Nginx 呼叫它並且瀏覽器告訴您它是不安全的 SSL 證書,那麼您無論如何都接受它並獲得 404 頁面。- 如何跳過無效證書消息跳轉到 404 頁面,或者如何直接跳轉到“找不到頁面”而不是 404?例如,像 go to
https://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
。