Nginx反向代理NodeJS配置

jopen 9年前發布 | 55K 次閱讀 NodeJS Web服務器

 

為什么要用Nginx反向代理NodeJS而不直接用NodeJS呢?

  • Nginx是經過實踐證明的高性能反向代理服務器,有很多已經很穩定的模塊(gzip,virtual host...)
  • 通過Nginx處理靜態文件可以降低NodeJS的負擔
  • Nginx可以做多機的負載均衡(雖然目前和我沒關系)
  • </ul>

    這里是Nginx反向代理NodeJS的配置文件

    配置文件

    只貼了NodeJS的相關部分

      location / {
        try_files $uri @nodejs;//嘗試查找是否存在請求的靜態文件
      }
      location @nodejs{
        proxy_http_version 1.1;
        proxy_set_header Host $host;//為反向設置原請求頭
        proxy_set_header X-Read-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;//設置WebSocket Upgrade
        proxy_set_header Connection "upgrade";
        proxy_pass http://localhost:3000;
      }
      location ~ \.(gif|png|jpg|css|js)$ {
        root /srv/http/www;//靜態文件的位置,例如express中的public目錄
        try_files $uri @nodejs;
        expires 7d;//設置靜態文件7天過期
      }

    Q&A

    Q:為什么在靜態文件的location里還寫著try_files $uri @nodejs;呢?

    A:因為假如用Socket.IO之類的node庫,它們的js/css文件要從node中獲取,所以要判斷如果找不到靜態文件時就嘗試去node里獲取。

    Q:為什么看別的try_files里面有$uri/,這個只有$uri?

    A:因為寫上$uri/會顯示Nginx的404,這時候應用內就等于有2個404頁面。。不加$uri/就只有node中的404頁面。

    如果有其他什么需要注意的,歡迎提醒0 0

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!