Nginx
在 nginx 中將萬用字元域重定向/重寫到 ssl
我已經嘗試了在此站點和其他站點上找到的所有解決方案,但在將帶有 http 的萬用字元子域重定向到 https 時仍然遇到問題。我還是結束了
https://%2A.example.com/site_admin
上面的 url 在 Chrome 中顯示,在 IE 中顯示“此頁面無法顯示”,在我手機上的 chrome 中顯示“您的連接不是私有的”。
非萬用字元 nginx 伺服器塊工作正常。
我已經嘗試在伺服器塊中為 http 萬用字元重寫和重定向 301,但它仍然將 url 重寫為 %A2(*)。我認為預設伺服器使用 *.example.com 的 server_name 但即使使用 $host 它仍然會重寫為 *.example.com。是否需要包含另一個指令?
server { listen 80; server_name example.com www.example.com; # tell users to go to SSL version this time if ($ssl_protocol = "") { rewrite ^ https://$server_name$request_uri? permanent; } } server { listen 443 ssl; server_name example.com www.example.com; ## ssl and locations not shown } server { listen 80; server_name manager.example.com ; # tell users to go to SSL version this time if ($ssl_protocol = "") { rewrite ^ https://$server_name$request_uri? permanent; } } server { listen 443 ssl; server_name manager.example.com ; ## ssl and locations not shown } server { listen 80 default_server; server_name *.example.com "" ; # tell users to go to SSL version this time if ($ssl_protocol = "") { rewrite ^ https://$host$request_uri? permanent; #rewrite ^ https://$server_name$request_uri? permanent; } } server { listen 443 default_server; server_name *.example.com ; ssl on; ## other ssl and locations not shown }
原來是瀏覽器記憶體。一旦它被清除,重定向就起作用了。有時這是最簡單的事情。
您錯過了
ssl
應該是萬用字元 sslserver {}
塊中的實際語句,因此您實際上在 443 埠上有一個 http 而不是 https。