Nginx的学习之路——反向代理与缓存

反向代理的意义

使用反向代理,能够对用户隐藏服务器的信息,同时代理将用户的请求经过负载均衡算法分发到不一样的上游服务器处理,不只加强了服务的处理性能,也保证了服务的高可用性,在上游的某一台服务器挂掉时,服务仍然能够经过其余的上游服务器对外服务。css

Nginx反向代理配置

这里简单演示一下反向代理,因此只部署了一台上游服务器,这里修改一下现有的nginx监听的套接字html

这里nginx监听docker容器内的8080端口,在我本机中的8080端口映射容器的80端口nginx

从新启动 nginx后咱们能够看到本机已经没法访问 nginx

在容器中从新开启一个nginx服务器,并修改这个新的服务器配置算法

这里须要注意的是,由于走了一层代理,因此上游服务器是无法拿到客户端的ip等信息的,由于上游服务器的客户端实际上是咱们的代理服务器,因此咱们须要在代理服务器转发的时候将客户端的信息放在头信息中转发出去 proxy_set_header

此时再在本机访问8080端口(本机8080=>容器中代理服务器80=>容器中上游服务器8080)能够看到能够访问以前的页面了。docker

并且咱们能够看到在响应中加上了代理的信息缓存

缓存

在咱们请求的页面中,有一部份内容是一段时间内不变的,好比说js css 静态html文档等,这类文件咱们就能够将其缓存在代理服务器上,从而减轻上游服务器的压力。 那么如何设置呢?服务器

首先咱们须要指定代理服务器缓存存放的位置:app

proxy_cache_path指定了缓存存放的文件的位置以及相关配置负载均衡

Sets the path and other parameters of a cache. Cache data are stored in files. The file name in a cache is a result of applying the MD5 function to the cache key. The levels parameter defines hierarchy levels of a cache: from 1 to 3, each level accepts values 1 or 2. For example, in the following configuration性能

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m; file names in a cache will look like this:

/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c

更多配置的详细信息能够查看nginx官方文档

重启代理服务器,并访问一次首页,使代理服务器缓存下页面,而后咱们断掉上游服务器

这里咱们看到只有代理服务器进程在服务器,而后咱们访问首页发现依然是能够访问的

同时咱们去看咱们指定的缓存路径下的文件,发现nginxhtml缓存到咱们指定的路径下了

相关文章
相关标签/搜索