如何将Nginx配置为Nodejs App的反向代理

在本文中,我们将解释如何在Linux中安装和配置Nginx作为Nodejs应用程序的反向代理。

Nodejs是一个免费的开源,轻量级,可扩展且高效的JavaScript框架,构建于Chrome的V8 JavaScript引擎之上,并使用事件驱动的非阻塞I / O模型。 Nodejs现在无处不在,并且已经变得如此受欢迎,用于开发从网站,网络应用到网络应用等的软件。

Nginx是一个开源的高性能HTTP服务器,负载均衡器和反向代理软件。 它具有简单的配置语言,易于配置。 在本文中,我们将展示如何将Nginx配置为Nodejs应用程序的反向代理。

另请阅读安全,加固和提高Nginx Web服务器性能的终极指南

注意 :如果您的系统已经使用NodejsNPM运行,并且您的应用程序在某个端口上运行,请直接转到第4步

第1步:在Linux中安装Nodejs和NPM

最新版本的Node.jsNPM可以从官方的NodeSource Enterprise Linux,Fedora,Debian和Ubuntu二进制发行版存储库安装,它由Nodejs网站维护,你需要将它添加到你的系统才能够安装最新的Nodejs和NPM包,如图所示。

在Debian / Ubuntu上

---------- Install Node.js v11.x ---------- 
$ curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
$ sudo apt-get install -y nodejs

---------- Install Node.js v10.x ----------
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install -y nodejs

在CentOS / RHEL和Fedora上

---------- Install Node.js v11.x ---------- 
$ curl -sL https://rpm.nodesource.com/setup_11.x | bash -

---------- Install Node.js v10.x ----------
$ curl -sL https://rpm.nodesource.com/setup_10.x | bash -

第2步:创建Nodejs应用程序

出于演示目的,我们将创建一个名为“sysmon”的示例应用程序,它将在端口5000上运行,如图所示。

$ sudo mkdir -p /var/www/html/sysmon
$ sudo vim /var/www/html/sysmon/server.js

将以下代码复制并粘贴到server.js文件中(将192.168.43.31替换为您的服务器IP)。

const http = require('http');

const hostname = '192.168.43.31';
const port = 5000;

const server = http.createServer((req, res) => {
	res.statusCode = 200;
  	res.setHeader('Content-Type', 'text/plain');
  	res.end('Sysmon App is Up and Running!\n');
});

server.listen(port, hostname, () => {
  	console.log(`Server running at http://${hostname}:${port}/`);
});

保存文件并退出。

现在使用以下命令启动节点应用程序(按Ctrl+x终止它)。

$ sudo node /var/www/html/sysmon/server.js
OR
$ sudo node /var/www/html/sysmon/server.js &   #start it in the background to free up your terminal

现在打开浏览器并通过URL http://198.168.43.31:5000访问您的应用程序。

从浏览器访问节点应用程序

从浏览器访问节点应用程序

第3步:在Linux中安装Nginx反向代理

我们将从官方存储库安装最新版本的Nginx ,如下所示。

在Debian / Ubuntu上

创建一个名为/etc/apt/sources.list.d/nginx.list的文件,并为其添加以下行。

deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/  bionic nginx

接下来,添加存储库签名密钥,更新系统包索引并安装nginx包,如下所示。

$ wget --quiet http://nginx.org/keys/nginx_signing.key && sudo apt-key add nginx_signing.key
$ sudo apt update
$ sudo apt install nginx

在CentOS / RHEL和Fedora上

创建一个名为/etc/yum.repos.d/nginx.repo的文件并粘贴以下配置之一。

CentOS的
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
RHEL
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/ gpgcheck=0 enabled=1

注意 :由于CentOS和RHEL之间的差异,有必要将$releasever替换$releasever 6 (对于6.x )或7 (对于7.x ),具体取决于您的操作系统版本。

接下来,添加存储库签名密钥并安装nginx包,如图所示。

# wget --quiet http://nginx.org/keys/nginx_signing.key && rpm --import nginx_signing.key
# yum install nginx

成功安装Nginx后 ,启动它,启用它以在系统启动时自动启动并检查它是否已启动并正在运行。

---------- On Debian/Ubuntu ---------- 
$ sudo systemctl status nginx
$ sudo systemctl enable nginx
$ sudo systemctl status nginx

---------- On CentOS/RHEL ---------- 
# systemctl status nginx
# systemctl enable nginx
# systemctl status nginx

如果您运行的是系统防火墙,则需要打开端口80(HTTP)443(HTTPS)5000(节点应用程序) ,Web服务器会监听客户端连接请求。

---------- On Debian/Ubuntu ---------- 
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw allow 5000/tcp
$ sudo ufw reload

---------- On CentOS/RHEL ---------- 
# firewall-cmd --permanent --add-port=80/tcp
# firewall-cmd --permanent --add-port=443/tcp
# firewall-cmd --permanent --add-port=5000/tcp
# firewall-cmd --reload 

第4步:将Nginx配置为Nodejs应用程序的反向代理

现在在/etc/nginx/conf.d/下为您的Node应用程序创建一个服务器块配置文件,如图所示。

$ sudo vim /etc/nginx/conf.d/sysmon.conf 

复制并粘贴以下配置(将192.168.43.31与您的服务器IP和howtoing.lan一起更改为您的域名)。

server {
    listen 80;
    server_name sysmon.howtoing.lan;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         http://192.168.43.31:5000;
    }
}
}

保存更改并退出文件。

最后,重新启动Nginx服务以实现最近的更改。

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

第5步:通过Web浏览器访问Nodejs应用程序

现在,您应该能够访问您的节点应用程序,而无需在URL中提供它正在监听的端口:这是用户访问它的一种非常方便的方式。

http://sysmon.howtoing.lan 

要使您的测试域名起作用,您需要使用/ etc / hosts文件设置本地DNS,打开它并在其中添加以下行(记得用您的服务器IP更改192.168.43.31 ,使用您的doamin名称更改howtoing.lan像之前一样)。

192.168.43.31 sysmon.howtoing.lan
通过Nginx反向代理访问节点应用程序

通过Nginx反向代理访问节点应用程序

就这样! 在本文中,我们展示了如何将Nginx配置为Nodejs应用程序的反向代理。 使用下面的反馈表单提出任何问题或分享您对本文的看法。


分享按钮