Nodejs是一个免费的开源,轻量级,可扩展且高效的JavaScript框架,构建于Chrome的V8 JavaScript引擎之上,并使用事件驱动的非阻塞I / O模型。 Nodejs现在无处不在,并且已经变得如此受欢迎,用于开发从网站,网络应用到网络应用等的软件。
Nginx是一个开源的高性能HTTP服务器,负载均衡器和反向代理软件。 它具有简单的配置语言,易于配置。 在本文中,我们将展示如何将Nginx配置为Nodejs应用程序的反向代理。
另请阅读 : 安全,加固和提高Nginx Web服务器性能的终极指南
注意 :如果您的系统已经使用Nodejs和NPM运行,并且您的应用程序在某个端口上运行,请直接转到第4步 。
第1步:在Linux中安装Nodejs和NPM
最新版本的Node.js和NPM可以从官方的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和youcl.lan一起更改为您的域名)。
server { listen 80; server_name sysmon.youcl.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.youcl.lan
要使您的测试域名起作用,您需要使用/ etc / hosts文件设置本地DNS,打开它并在其中添加以下行(记得用您的服务器IP更改192.168.43.31 ,使用您的doamin名称更改youcl.lan像之前一样)。
192.168.43.31 sysmon.youcl.lan
通过Nginx反向代理访问节点应用程序
就这样! 在本文中,我们展示了如何将Nginx配置为Nodejs应用程序的反向代理。 使用下面的反馈表单提出任何问题或分享您对本文的看法。