Simple guide on How to setup Nginx Reverse Proxy

如何设置Nginx反向代理

在本篇教程中,我们将学习如何设置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反向代理的教程。如果有任何问题,欢迎关注我们的微信公众号和我们联系。