簡體   English   中英

nginxletsencrypt https 重定向與 express nodejs 應用程序不工作

[英]nginx letsencrypt https redirect with express nodejs app not working

我需要 https 作為我網站的默認服務方式,我在生成letsencrypt證書期間選擇了選項2。 我有 https 在我的網站上工作。 這是一個簡單的 HTML 頁面,由 nodejs 在端口 3000 上提供服務。它目前托管在 Oracle 雲中。 我在 iptables 中打開了端口,因為 Oracle 不使用 ufw。

如果我 go 到https://www.example.com ,該站點可以安全加載,因此一切正常。 如果我 go 到http://www.example.com ,該站點也會加載但不安全。 如果我從 go 到 example.com,則該站點加載到 http,而不是 Z5E056C500A5D4B6AADE5110B。

我無法考慮如何編寫 nginx 配置文件。

我需要使用 http 將 proxy_pass 到端口 3000,但是當我將 proxy_pass 更改為 https

proxy_pass https://localhost:3000;

它無法加載任何內容,這對我來說有點意義,因為我的 nodejs 應用程序沒有任何代碼來支持 https 並且我的印象是 nginx 可以為我處理所有這些。 這種思路得到了進一步的支持,因為就像我上面所說的, https://www.example.com現在對我的網站來說工作得很好。 下面是我的配置,刪除了我的服務器名稱。 請讓我知道如何最好地完成我想要完成的事情。

listen 80;
listen [::]:80;
server_name example.com www.example.com;

location / {

proxy_pass http://localhost:3000;

}


  listen [::]:443 ssl ipv6only=on; # managed by Certbot
  listen 443 ssl; # managed by Certbot
  ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
  include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot




}
server {
  if ($host = www.example.com) {
      return 301 https://$host$request_uri;
  } # managed by Certbot


  if ($host = example.com) {
      return 301 https://$host$request_uri;
  } # managed by Certbot


      listen 80;
      listen [::]:80;

      server_name example.com www.example.com;
  return 404; # managed by Certbot




}```

感謝 Marc,似乎我的配置創建得很奇怪,並且 certbot 添加了一些亂七八糟的東西,但我已經弄清楚了。 正如 Marc 所說,將所有 80 重定向到 https。 在 https 服務器中,確保您有證書和 proxy_pass 到您的端口 3000,或者您的應用程序正在運行的任何地方。

server {

        listen 80;
        server_name example.com www.example.com;
        return 301 https://www.example.com;
}


server {

        listen [::]:443 ssl ipv6only=on; # managed by Certbot
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


        location / {
        
        proxy_pass http://localhost:3000;

        }


}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM