Nginx反向代理NodeJS配置
為什么要用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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!