Nginx
Nginx:無法通過 SSL 訪問非 www 站點(連接被拒絕)
我正在嘗試使用 Ubuntu 14.04 上的 nginx 獲得一個使用 SSL 保護的站點。
這是我的伺服器塊文件的樣子:
server { listen 80; listen [::]:80; server_name example.com www.example.com; return 301 https://www.example.com$request_uri; } server { listen 443 ssl; listen [::]:443 ssl; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; return 301 https://www.example.com$request_uri; } server { listen 443 ssl; listen [::]:443 ssl; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; root /var/www/html; index index.php; location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { log_not_found off; access_log off; allow all; } location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ { expires max; log_not_found off; } location / { #try_files $uri $uri/ =404; #index index.php index.html index.htm index.nginx-debian.html; try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } location ~ /\.ht { deny all; } location ~ /.well-known { allow all; } }
第三個塊是“主要”塊,它使用 https 提供 www url(工作正常)。第一個塊將任何 http 和非 www 請求重定向到第三個塊(工作正常)。
第二塊不起作用。我在這裡試圖實現的是將任何 https 和非 www 請求定向到第三個塊,但嘗試以這種方式訪問該站點會產生“example.com 拒絕連接”(與 Chrome 呼叫的 ERR_CONNECTION_REFUSED 不同,因為沒有錯誤顯示在請求的網路選項卡中,它只是一個空請求)。
我已經嘗試了很多事情,但我不知道為什麼會這樣。
附加資訊:當訪問塊 2 url(沒有 www 的 https)時,nginx 訪問日誌顯示 200/OK 響應,但響應只是空的。
已解決——這是一個因魔法而失敗的案例。
域名註冊商控制面板有一個 www/no-www 便利設置,它會導致重定向覆蓋 DNS 設置。
禁用便利設置(即選擇“無偏好”)使實際的 DNS 設置起作用。