NGINX Open Source 是一款开源的Web服务器和反向代理,近年来因其可扩展性、出色的性能和小的占用空间而越来越受欢迎。最初,NGINX Open Source 是为了解决C10K问题(在单个Web服务器上提供10,000个并发连接)而创建的。
NGINX Open Source 的特性和性能使其成为高性能网站的必备工具,它是全球排名前 100,000 个最繁忙网站的第一名Web服务器。
考虑以下的Node.js应用程序
const http = require('http');
const hostname = 'localhost';
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}/`);
});
现在,在Linux上安装Nginx反向代理
创建一个名为**/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
在成功安装Nginx后,启动它,使其在系统启动时自动启动,并检查它是否正在运行。
<strong>---------- 在Debian/Ubuntu上 ----------</strong>
$ sudo systemctl status nginx
$ sudo systemctl enable nginx
$ sudo systemctl status nginx
如果您运行系统防火墙,您需要打开80端口(HTTP)、443端口(HTTPS)和5000端口(Node应用),这是Web服务器用于客户端连接请求的端口。
<strong>---------- 在Debian/Ubuntu上 ----------</strong>
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw allow 5000/tcp
$ sudo ufw reload
将Nginx配置为Node.js应用的反向代理
现在,在**/etc/nginx/conf.d/**目录下为您的Node应用程序创建一个服务器块配置文件,如下所示。
$ sudo vim /etc/nginx/conf.d/sysmon.conf
复制并粘贴以下配置(将localhost更改为您的服务器IP,将yourdomainname更改为您的域名)。
server {
listen 80;
server_name sysmon.yourdomainname;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://localhost:5000;
}
}
保存更改并退出文件。
最后,重新启动Nginx服务以应用最近的更改。
$ sudo systemctl restart nginx
或
# systemctl restart nginx
通过Web浏览器访问Node.js应用程序
现在,您应该能够在URL中访问您的Node应用程序,而无需提供它正在监听的端口:这是用户访问的更方便的方式。
http://sysmon.yourdomainname
为了使您的测试域名正常工作,您需要使用**/etc/hosts**文件设置本地DNS,打开它并在其中添加以下行(请记得像以前一样将localhost更改为您的服务器IP,将yourdomainname更改为您的域名)。
localhost sysmon.yourdomainname
恭喜!您已成功将Nginx配置为您的Node.js应用程序的反向代理。