JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

如何使用 Nginx 搭建一个具有缓存功能的反向代理服务呢?

wys521 2024-09-06 04:25:25 精选教程 43 ℃ 0 评论

【本文中,很多图中的文字看不清,可以参考下面的链接:https://www.jianshu.com/p/7bc6dbef9720】

上篇文章演示了,Nginx是如何做为一个静态服务器工作的;那么我们将这个服务器作为上游服务器;今天我们再搭建一个Nginx来作为反向代理,演示Nginx作为具有缓存功能的反向代理如何使用; 也就是说,使用nginx的两个功能:

  • 反向代理
  • 缓存

由于上游服务器要处理非常复杂的业务逻辑,性能可能比较低,使用Nginx作为反向代理以后呢,可以由一台Nginx,把请求按照复杂均衡算法,代理给多台上游服务器工作,这样我们就实现了水平扩展,在用户无感知的情况下,我们添加更多的上游服务器,来提升我们的处理性能。 而当上游服务器出现问题的时候,nginx可以自动的把请求,从有问题的服务器转交给正常的服务器来处理。

首先,我们需要将上一篇文章中的静态资源dlib服务做一定的修改,只能本机访问8080端口;因此,修改完nginx.conf的内容,如下:

接下来,我们使用OpenResty版本的nginx作为反向代理,因此,需要下载、安装此版本:

官网地址:

http://openresty.org/cn/linux-packages.html

OpenResty安装位置:

通过下面的命令,可以启动openresty版本的nginx

systemctl start openresty

因为nginx服务是部署在window下的虚拟机(centos7)里的,

因此需要在window下的hosts文件里,配置域名映射关系;

接下来,我们访问以下配置文件中定义的域名:

接下来重新看一下,proxy_pass的相关配置:

proxy_set_header 这个命令,起到什么作用呢?因为有了一个反向代理,所以我们再获取一些变量或者一些值的时候,可能就会出问题;比方说,一个tcp链接是由对端地址的,但是有了反向代理以后,那么我们的反向代理与客户端是一个tcp链接,而反向代理与上游服务器又是另一个tcp链接,因此,如果取以前的变量remote_addr,也就是tcp远端的连接地址,那么这个时候,在上游服务那里,取到的实际上是反向代理的地址,如果想获得浏览器的地址,作为限制浏览器访问速度等功能的一个作用时,其实是拿不到的,所以通过命令proxy_set_header命令,可以把一些值添加一条新的header,如X-Real-IP,发送到上游服务器;host也是,用户访问的域名是直接在浏览器中输入的,我们即可以上游服务器来处理这个域名,也可以让反向代理处理域名

那么,proxy所有配置特性,可以在官网中查询,地址如下: /

因为nginx作为反向代理的时候,通常只有动态的请求,也就是不同的用户,访问同一个url, 看到的内容是不同的,这个时候,才会交由上游服务器处理,但是,可能会有一些内容在某段时间内是不变的,这个时候为了减轻上游服务器的压力,我们就会让nginx把上游服务返回的内容,缓存一段时间,比如一天,在一天之内,即使上游服务器对这个内容的响应发生了变化,也不处理;只会拿已经缓存的内容,向浏览器进行响应,因为nginx的性能远远领先与上游服务器的性能,所以对于小的站点会有大的性能提升

二、配置缓存功能

好的,接下来,我们演示一下,如何配置一个缓存服务器:

先进行缓存类型的设置,如下图所示:

那么如何使用刚才配置的缓存呢?

修改完成openresty版本的配置文件后,

重新启动openresty服务:

systemctl restart openresty

三、 验证缓存

接下来,开始验证,缓存是否起作用? 先关闭掉以前的静态资源服务: /sbin/nginx -s stop 再刷新页面

(请注意: 如果以前的静态资源服务已经关闭了,请打开,然后访问一次静态资源,这样,缓存服务才能缓存静态资源; 然后,此时关闭静态资源服务,验证刚才配置的缓存是否有效果。)

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表