反向代理的意义
使用反向代理,可以对用户隐藏服务器的信息,同时代理将用户的请求通过负载均衡算法分发到不同的上游服务器处理,不仅增强了服务的处理性能,也保证了服务的高可用性,在上游的某一台服务器挂掉时,服务仍然可以通过其他的上游服务器对外服务。
Nginx反向代理配置
这里简单演示一下反向代理,所以只部署了一台上游服务器,这里修改一下现有的nginx监听的套接字
这里nginx监听docker容器内的8080端口,在我本机中的8080端口映射容器的80端口

nginx后我们可以看到本机已经无法访问nginx。

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

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

而且我们可以看到在响应中加上了代理的信息

缓存
在我们请求的页面中,有一部分内容是一段时间内不变的,比如说js css 静态html文档等,这类文件我们就可以将其缓存在代理服务器上,从而减轻上游服务器的压力。
那么如何设置呢?
首先我们需要指定代理服务器缓存存放的位置:

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的官方文档
重启代理服务器,并访问一次首页,使代理服务器缓存下页面,然后我们断掉上游服务器


同时我们去看我们指定的缓存路径下的文件,发现nginx将html缓存到我们指定的路径下了
