Nginx

HTTPS 重定向和子域 NGINX

  • April 29, 2017

我的網站上有兩個子域,它們都提供網路應用程序,還有一個在域(和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這樣它肯定正在執行。我還仔細檢查了symlinkto sites-enabled,重新啟動nginx但仍然沒有運氣。

有任何想法嗎?

看來問題是我自己的懶惰造成的。

當我符號連結伺服器塊時,我這樣做了:

ln -s ./gitea ../sites-enabled/gitea

sites-available目錄中。

在創建符號連結時,這種速記似乎不起作用。因此,雖然看起來連結已成功創建,但連結實際上已損壞。一旦我使用以下命令重新創建了完整路徑,它就可以正常工作。

ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/gitea

感謝理查德史密斯的幫助!

引用自:https://serverfault.com/questions/847344