
我跟著Cerbot 的說明 在我的 Debian 伺服器中為網域取得 NGINX 的 HTTPS 證書,但 HTTPS 未正確重新導向。
etc/nginx/conf.d/app.conf
我從 Certbot 的自動生成中得到以下內容:
server {
server_name mnpd.khkm.dev www.mnpd.khkm.dev;
# listen 8080;
server_tokens off;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
# return 301 https://mnpd.khkm.dev$request_uri;
proxy_pass http://mnpd.khkm.dev;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mnpd.khkm.dev/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mnpd.khkm.dev/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = mnpd.khkm.dev) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name mnpd.khkm.dev www.mnpd.khkm.dev;
return 404; # managed by Certbot
}
在 Chrome 中,當我去https://mnpd.khkm.dev/,我得到:
mnpd.khkm.dev redirected you too many times.
Try deleting your cookies.
ERR_TOO_MANY_REDIRECTS
我找到了這個堆疊溢位答案
我查看了 Web 控制台中的“網絡”選項卡,發現該頁面不斷被重定向到https://mnpd.khkm.dev/
. NGINX 設定應該偵聽 HTTPS 連接埠 443,那麼為什麼它不載入並不斷重定向呢? (我希望載入預設的 NGINX 頁面。)
答案1
連接埠 80 被重定向到 443,它正在嘗試代理正在重定向的 80....
去除
location / {
# return 301 https://mnpd.khkm.dev$request_uri;
proxy_pass http://mnpd.khkm.dev;
}
我不會讓 certbot 重寫我的設定檔。它確實只適用於最簡單的用例。我建議使用certbot 處於獨立模式。這使得配置成為您的問題,並讓 certbot 管理憑證。
您執行 cert bot,它會告訴您憑證檔案的位置,然後您將這些位元新增到 HTTPS 伺服器設定中。當它更新時;它將新檔案放在同一位置,因此您無需在網站設定後再次變更配置。 certbot 更新並重新啟動 nginx。