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端口。

 

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