HTTPS 重定向和子域 NGINX
我的網站上有兩個子域,它們都提供網路應用程序,還有一個在域(和
www.
)本身上執行的網站;這些都是:
gitea.mywebsite.co.uk
- 繼續執行:3000
和
mail.mywebsite.co.uk
- 尚未執行這兩個都配置了
CName
指向它們的 DNS 條目mywebsite.co.uk
,我已經檢查過這些條目實際上已經傳播。我想
HTTPS
專門服務,因此已經SSL Certificates
為子域和整個域獲取並安裝了(我買不起這些花哨的萬用字元證書)。為了實現這一點,我設置了
nginx
監聽並將所有傳入流量:80
重定向到這樣(一旦我啟動並執行所有內容,我將實施):HTTP``HTTPS``HSTS
server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 301 https://$host$request_uri; }
這似乎可以正常工作,無論我輸入什麼子域,我都會看到瀏覽器將其重定向到
HTTPS
等效項。所以問題似乎發生在
reverse proxy
配置階段的某個地方。我希望將所有請求gitea.mywbsite.co.uk
傳遞:3000
給處理。我是這樣實現的:server { listen 443 ssl; server_name gitea.mywebsite.co.uk; ssl_certificate /etc/ssl/certs/gitea.mywebsite.crt; ssl_certificate_key /etc/ssl/private/gitea.mywebsite.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; location / { proxy_pass https://localhost:3000/; } }
但是,每當我嘗試訪問它時,都會看到標準瀏覽器“無法連接”錯誤(注意,這不是 SSL 錯誤頁面)。
我可以通過直接載入很好地連接到 webapp,
mywebsite.co.uk:3000
這樣它肯定正在執行。我還仔細檢查了symlink
tosites-enabled
,重新啟動nginx
但仍然沒有運氣。有任何想法嗎?
看來問題是我自己的懶惰造成的。
當我符號連結伺服器塊時,我這樣做了:
ln -s ./gitea ../sites-enabled/gitea
從
sites-available
目錄中。在創建符號連結時,這種速記似乎不起作用。因此,雖然看起來連結已成功創建,但連結實際上已損壞。一旦我使用以下命令重新創建了完整路徑,它就可以正常工作。
ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/gitea
感謝理查德史密斯的幫助!