Nginx Proxy服务器
1. 代理原理:正向代理与反向代理
举一个简单的例子来说明正代与反代:
A:客户端 B:代理 C:服务端
A想要买一件产品,但是这个产品C有,A认识C但是并不能直接联系到C,此时就出来了B,C认识B,A也认识B,所以 A就通过B把C的产品买了下来,其实C不知道把产品卖给了A,这就是正向代理
A想要买一件产品,这个产品C有,但是A不认识C不知道C有,只认识B,A把请求发给B,B根据A的请求从C那里拿到产品 然后返回给A,此时A并不知道自己买的产品是C的,这就是反向代理
2.启动代理:
环境准备:两台装载nginx的服务器,都关闭防火墙和selinux
nginx1:只是需要启动就可以了 #systemctl start nginx
nginx2:修改配置文件: #vi /etc/nginx/conf.d/default.conf:
在location标签里面添加如下内容:
proxy_pass http://192.168.100.10:80; #真实服务器的IP地址
proxy_redirect default; #代理重定向
proxy_set_header Host $http_host; #代理设置头部
proxy_set_header X-Real-IP $remote_addr; #客户机IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #记录代理地址
proxy_connect_timeout 30; #后端服务器连接的超时时间_发起三次握手等候响应超时时间
proxy_send_timeout 60; #后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
proxy_read_timeout 60; #nginx接收upstream(上游/真实) server数据超时, 默认60s, 如果连续的60s内没有收到1个字节, 连接关闭。像长连接
proxy_buffering on; #开启缓存
proxy_buffer_size 32k; #proxy_buffer_size只是响应头的缓冲区
proxy_buffers 4 128k; #内容缓冲区域大小
proxy_busy_buffers_size 256k; #从proxy_buffers划出一部分缓冲区来专门向客户端传送数据的地方
proxy_max_temp_file_size 256k; #超大的响应头存储成文件。
然后重启服务访问代理地址:
会发现访问代理地址就会给我们转发到真实的服务器上面去了。
3.Proxy缓存
缓存类型:CDN缓存网页缓存(公网) 数据库缓存 memcache redis 网页缓存 nginx-proxy 客户端缓存 浏览器缓存
nginx proxy缓存模块:ngx_http_proxy_module
缓存开关
# Syntax: proxy_cache zone | off;
# Default: proxy_cache off;
# Context: http, server, location
代理缓存
# Syntax: proxy_cache_path path [levels=levels] keys_zone=name:size[inactive=time] [max_size=size]
# [manager_files=number]
# Default: —
# Context: http
# example:proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
缓存维度
# Syntax: proxy_cache_key string; 定义缓存唯一key,通过唯一key来进行hash存取,缓存文件名
# Default: proxy_cache_key $scheme$proxy_host$request_uri;
# Context: http, server, location
缓存过期
# Syntax: proxy_cache_valid [code ...] time;
# Default: —
# Context: http, server, location
# proxy_cache_valid 200 302 10m;
# proxy_cache_valid 404 1m;
清理Nginx缓存
1.rm 删除已缓存的数据
# rm - rf /cache/*
2.通过ngx_cache_purge 扩展模块清理,需要编译安装nginx
# location ~ /purge(/.*) {
# allow all;
# proxy_cache_purge proxy_cache $1$is_args$args;
# }
若有问题咨询欢迎大家联系我:
邮箱:wangmouren_sir@163.com
网友评论