Nginx
NGINX 將除 letencrypt 之外的所有內容重定向到 https
我有一個簡單的配置,將除了letsencrypt請求之外的所有內容都重定向到https,然後讓我的虛擬主機只在https..
目前我所有的請求都被重定向到 https,然後是 404 用於letsencrypt:
這是我的配置…
server { listen 80 default_server; listen [::]:80 default_server; server_name _; location ^~ /.well-known/acme-challenge/ { allow all; default_type text/plain; return 200 "$1.abcd-efgh"; } location / { return 301 https://$host$request_uri; } } server { listen 443 ssl; server_name plex.my_domain.com; ssl_session_timeout 30m; ssl_protocols TLSv1.2 TLSv1.1 TLSv1; ssl_certificate /root/.acme.sh/plex.my_domain.com/fullchain.cer; ssl_certificate_key /root/.acme.sh/plex.my_domain.com/plex.my_domain.com.key; ssl_session_cache shared:SSL:10m; add_header X-Xss-Protection "1; mode=block" always; add_header X-Content-Type-Options "nosniff" always; add_header Strict-Transport-Security "max-age=2592000; includeSubdomains" always; add_header X-Frame-Options "SAMEORIGIN" always; proxy_hide_header X-Powered-By; add_header 'Referrer-Policy' 'no-referrer'; add_header Content-Security-Policy "frame-ancestors my_domain.com plex.my_domain.com;"; location / { proxy_pass http://127.0.0.1:32400; proxy_set_header Range $http_range; proxy_set_header If-Range $http_if_range; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #Next three lines allow websockets proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
您在 https 伺服器塊中設置了 HSTS 標頭。這意味著如果您使用瀏覽器訪問您的網站
https
一次,您的瀏覽器將在第一次訪問後始終使用 https 連接到您的域。這意味著您無法使用瀏覽器測試您的配置。您需要使用
curl
不儲存 HSTS 列表的或類似工具對其進行測試。您的配置有一個小調整,您可以
location /.well-known/acme-challenge
對 LetsEncrypt 位置使用簡單的前綴匹配。nginx 將使用location
塊中最具體的匹配。