最簡單的做法
直接修改nginx配置,增加下面配置
server {
listen 80; # 監聽80埠
server_name node.bluej.cn; # 監聽的域名
#access_log /web/nodejs/access.log; #配置了一下來訪日誌,怕佔用硬碟,關了
error_log /web/nodejs/error.log; #配置了一下錯誤日誌
## 針對靜態資源做優化,所有靜態資源由nginx來處理,注意有新的型別記得加進來
location ~ \.(gif|jpg|jpeg|png|bmp|swf|css|js|doc|docx|xls|xlsx|zip|rar|mp3|mp4)$
{
root /web/nodejs; #指向根目錄
expires max; #用來設定快取時間
}
## node執行緒,只負責動態部分
location /{
proxy_pass http://127.0.0.1:8000; #反向代理,指向具體的node監聽埠
proxy_redirect off; #關閉地址的重定向
# 在代理請求頭中加入下面的資訊,方便我們用nodejs獲取一些客戶端資訊
proxy_set_header Host $host; #本機地址(ip或域名)
proxy_set_header X-Real-IP $remote_addr; #客戶端真實ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#客戶端真實ip
}
}
複製程式碼
常見問題
- 訪問頁面超時
有可能是讀取檔案
fs.readFile
的路徑出問題了,不同環境下,路徑寫法有所區別,正確的相容寫法應該是
否則,很容易請求超時,因為無法讀取正確的檔案路徑var path = require("path");//引入path模組 path.join(__dirname, "../view/index.html");//引數一,表示你當前檔案所在物理絕對路徑,引數二就是你具體要訪問的路徑了 複製程式碼
- nginx訪問靜態檔案,老是報403 Forbidden
原因可能是 nginx沒有訪問目錄的許可權,在 nginx.conf 檔案中,標註了
user www www;
,所以,我們們網站根目錄所在的父資料夾的擁有者必須也是www使用者,所以,記得設定一下你的目錄擁有者chown www:www /web 複製程式碼
- 如何設定我們的nodejs網站可以開機啟動
如果你是用pm2
就會把你啟動的網站資訊存在 ~/.pm2/dump.pm2,例如 /root/.pm2/dump.pm2pm2 startup pm2 save 複製程式碼
其它同型別產品一樣道理
如何搞均衡負載
在配置裡,在server段前面加上upstream段
upstream nodejs_upstream {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
server{
...
location /{
proxy_pass http://nodejs_upstream
}
...
}
複製程式碼
上面的配置意思是nginx會自動分配請求到多個ip埠地址中,實現均衡負載