Linux

nodejs伺服器和nginx衝突

  • December 11, 2014

我在數字海洋水滴上執行 nodejs 應用程序,我正在嘗試配置 nginx,以便它代理我的應用程序正在執行的埠的埠,

這是我在可用站點上的預設文件中的內容

server {
   listen 80 default_server;
   listen [::]:80 default_server ipv6only=on;

   root /prwrite;
   index index.html index.htm app.js;

   # Make site accessible from http://localhost/
   server_name http://www.xxx.xxxxx.com;

   location / {

          proxy_pass http://www.xxx.xxxx.com:3000/;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

   }

   # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
   #location /RequestDenied {
   #       proxy_pass http://127.0.0.1:8080;
   #}

   error_page 404 /404.html;

}

更改listen 80 default_server; 為 3000 後,我的節點應用程序根本無法啟動

但是使用給定的配置,如果我去http://XXX.XXXXXX.com:3000應用程序工作正常

並載入http://xxx.xxxxxxx.com

在我的頁面上給了我很多 404 not found 錯誤

我怎樣才能解決這個問題 ?

當 node.js 和 nginx 都被告知使用埠 3000 時,您的應用程序無法啟動,因為只有一個應用程序可以綁定到該埠(考慮到它們都試圖綁定到 INADDR_ANY,即 0.0.0.0)。

您可以通過在 nginx 配置中添加代理位置來解決這種情況,例如location /socket.io/ {(或更適合您的設置)指向在埠 3000 上執行的 node.js 和proxy_pass.

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