我想就以下 Nginx 配置尋求一些幫助,以便將諸如 之類的 URLhttps://www.mywebsite.com
重寫為https://mywebsite.com
.我目前正在使用以下配置:
server {
server_name www.mywebsite.com;
return 301 $scheme://mywebsite.com$request_uri;
}
server {
listen 80;
server_name mywebsite.com;
# Some more settings...
}
server {
listen 443 ssl;
server_name mywebsite.com;
ssl_certificate path_to_ssl_certificate;
ssl_certificate_key path_to_ssl_certificate_key;
# Some more settings...
}
如果重要的話,我使用的證書是通配符 SSL 證書,它是在伺服器本身(Ubuntu 12.04)上使用 OpenSSL 自簽署的。正在發生的事情是www.mywebsite.com
正確地重定向到mywebsite.com
,但是https://www.mywebsite.com
才不是重定向到https://www.mywebsite.com
(即,www
在瀏覽器中查看頁面時仍會出現)。我可能做錯了什麼?
答案1
解決方案是將第一個伺服器區塊修復為:
server {
listen 80;
listen 443;
server_name www.mywebsite.com;
return 301 $scheme://mywebsite.com$request_uri;
}
例如,您忘記在 ssl 連接埠上捕獲 www.mywebsite.com 連接,僅此而已。順便說一句,這是從網站名稱中刪除 www 的最佳方法,不錯的選擇。
答案2
您的重定向發生在僅偵聽連接埠 80 的虛擬主機。除非你的瀏覽器都支援神經網路研究所,您只能擁有一個 SSL 虛擬主機,因此該規則需要進入您現有的 SSLserver
區塊。
if ($host = www.mywebsite.com) {
rewrite ^ https://mywebsite.com$request_uri? permanent;
}