NodeJS與Nginx共用80埠
阿新 • • 發佈:2019-02-02
Apache和Nginx通常都會使用預設的HTTP請求的80埠。但我們知道,一旦開啟了Nginx後,NodeJS再去監聽80埠就會發生錯誤。那麼,我們該如何解決這個問題呢?
接下來,以最近釋出的一個個人博站為例。
在我的阿里雲伺服器上已經開啟了Nginx服務,並且該域名下已經有對應的專案在跑。而此時,我的博站是採用NodeJS編寫的,監聽的埠是8090埠。要實現NodeJS能夠監聽到80埠,可以採取的一種簡單的方法是,將80埠反向代理到8090的埠上,這樣,所有傳送到80埠的請求都會重定向到8090;
首先,我在阿里雲的域名解析上先配置了kingsley.allenzhan.top 這個子域名。然後在我的Nginx裡的vhost裡建立了一個king.conf檔案,並寫入相應的配置。
如下
其中
location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:8090/; proxy_set_header X-NginX-Proxy true; }
是將發往 kingsley.allenzhan.top 的請求 重定向到 NodeJS監聽的 8090 埠上。
但是,我們會發現,路由是成功了,但是靜態檔案卻找不到了。所以,還需要配置以下的路徑
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { root /application/nginx/html/king/blogs/; expires 30d; } location ~ .*\.(js|css)?$ { root /application/nginx/html/king/blogs/; expires 12h; }
/application/nginx/html/king/blogs/這個路徑是存放部落格專案的靜態資源的位置。
寫入配置後,儲存。然後使用命令nginx -s reload 重啟Nginx。這樣,再訪問kingsley.allenzhan.top就可以看到我們不用再輸入埠8090 也能夠實用預設的80埠訪問我們的專案了。