在本篇教程中,我们将学习如何设置Nginx反向代理,但是首先,让我们简要讨论一下什么是反向代理,为什么我们需要它?
反向代理
反向代理是一种接收请求(HTTP/HTTPS),然后将其传输或分发到后端服务器的一种服务器。后端服务器可以是诸如Tomcat,wildfly或Jenkins等的应用程序服务器,甚至也可以是诸如Apache之类的其他Web服务器。
但是,为什么我们需要在应用程序或Web服务器的前面设置反向代理呢,我们需要反向代理的原因是:
- 它能够隐藏原始的请求端,从而使我们的后端服务器更安全,更不容易受到网络攻击
- 由于反向代理是所有请求的第一个连接点,因此它可以帮助加密/解密请求,这样可以减轻后端服务器的压力
- 它也可以用于内容的缓存,这又减轻了来自其他服务器的负载
- 它也可以充当负载均衡器
如何设置Nginx反向代理
前提条件
我们将需要一个后端服务器,它可以是任何应用程序服务器或是Web服务器,但是请记住,如果你使用的Web服务器也与Nginx反向代理服务器位于同一台服务器上,请确保别的Web服务器没有使用与Nginx反向代理服务器相同的TCP端口,比如80和443端口。
就本教程而言,我将使用托管在IP地址为192.168.1.110的另一台服务器上的tomcat服务器,运行在端口8080上。如上所述,你可以选择其他应用程序服务器或Web服务器。
安装
现在,让我们继续简要地讨论一下Nginx的安装:
Ubuntu
Nginx在默认的Ubuntu存储库中就已存在,因此,可以简单地使用以下命令进行安装:
$ sudo apt-get update && sudo apt-get install nginx
CentOS/RHEL
在CentOS上安装Nginx,我们需要添加一些存储库,请在“/etc/yum.repos.d”中创建一个名为“nginx.repo”的文件,并添加以下存储库信息:
$ vi /etc/yum.repos.d/nginx.repo
[nginx] name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1
根据你使用的CentOS/RHEL发行版,将“OS”替换为“rhel”或“centos”,根据你使用的版本是5.x,6.x或7.x,相应地将“OSRELEASE”替换为“5”,“6”或“7”。
现在启动服务并设置在boot阶段就自动启动。
# systemctl start nginx
# systemctl enable nginx
现在,我们可以打开Web浏览器并输入Nginx服务器的IP地址以查看默认的网页并确保Nginx可以正常运行。
配置
现在Nginx已经安装并可以正常工作了,下面我们将继续进行Nginx反向代理配置部分,但是首先,我们将删除Nginx的默认配置,这可以通过以下的命令来完成:
# rm /etc/nginx/conf.d/default.conf
当然,我们也可以删除上述文件中的内容,并在那里进行Nginx反向代理的配置,但是我更喜欢为每个配置的站点使用单独的文件,因此,让我们为Nginx反向代理创建一个新的conf文件。
# vi /etc/nginx/conf.d/test-proxy.conf
在文件中输入以下内容:
server {
listen 80;
listen [::]:80;
server_name test-reverse-proxy.com;
location / {
proxy_pass ;
}
}
现在保存文件并退出,在配置中,我们指定了服务器名称(server_name),然后在”location”段下面,我们提供了后端服务器,比如我们的Apache tomcat服务器。现在要让所做的更改生效,我们将重启Nginx服务,但是在此之前,我们必须检查所做的配置是否正确。
ngnix -t
或者我们也可以提供配置文件的完整路径
nginx -t -c /etc/nginx/conf.d/test-proxy.conf
如果检查没有返回错误,我们就可以重启Nginx服务了
# systemctl restart nginx
注意:在进行下一步之前,请确保后端服务器能够正常工作
测试
现在,下一步也是最后一步是检查Nginx反向代理是否能够正常工作?打开Web浏览器并输入Nginx服务器地址/URL,现在,当页面完成加载时,我们应该会看到apache tomcat的页面,而不是我们先前看到的Nginx默认页面。
就是这样,这就是我们的有关如何设置Nginx反向代理的教程。如果有任何问题,欢迎关注我们的微信公众号和我们联系。