Nginx實現反向代理

我在服務器上寫了個腳本,跑在8008端口,通過服務器IP+端口:http://120.78.194.45:8080我們能夠訪問服務器上的服務。如下圖,app1.js即是我寫的一個簡單腳本。通過node啓動服務

app1.js內容如下:

const http = require('http')
http.createServer(function(req, res) {
 res.writeHead(200, {'Content-Type': 'text/plain'})
 res.end('hahahahhahahhhahahhahahhahhahahhah')
}).listen(8008)

console.log('server running on http://120.78.194.45:8008/')

如果我們需要通過服務器的80端口訪問這個服務,需要通過nginx實現反向代理。通過nginx監聽80端口,同時把來自80端口的流量分配給node服務的另外一個端口,從而實現服務的代理。如果服務器只需要放一個網站程序的話,那解析網站到服務器的一個網址。網站程序監聽80端口就可以了。如果服務器有很多個應用,藉助nginx不僅可以實現端口的代理,還可以實現負載均衡,讓nginx判斷來自哪個域名或者IP的訪問,從而根據配置的規則,將請求原封不動地轉發給各個端口或者特定的某幾臺機器。在我現在這個案例中,就是把80端口的請求,都轉發到nodejs啓動的這個8008端口來處理。

1.首先安裝nginx。通過sudo apt-get install nginx安裝nginx。通過nginx -v查看nginx版本。

2.進入nignx目錄。通過cd /etc/nginx/進入nginx目錄,可以找到一個conf.d文件夾。執行cd conf.d進入conf.d目錄。

3.通過sudo vi app1-8008.conf新建一個配置文件,配置文件命名可以自定義。配置文件內容如下:

upstream app1 {
 server 127.0.0.1:8008;  #app1.js腳本的服務
}

server {
listen 80;
server_name 120.78.194.45; #監聽服務器的80端口

location / {
 proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://app1; # 代理到app1端口
proxy_redirect off;
}
}

然後退出編輯界面。回到/etc/nginx/conf目錄下,執行sudo nginx -t驗證配置文件是否正確。檢查正確以後,執行sudo nginx -s reload重啓nginx服務。

這樣我們就能在瀏覽器通過http://120.78.194.45/直接訪問app1.js的服務了,而不用輸入8008端口。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章