nginx Proxy服务器

一、代理原理

1、正向代理与反向代理

(1) 正向代理:内网客户机通过代理访问互联网。

客户端向代理发送请求并指定目标,代理向服务器转交请求并将获得的内容返回给客户端。正向代理可以隐藏客户端的身份和位置,绕过访问限制。

(2) 反向代理:外网用户通过代理访问内网服务器。

代理服务器在接收到客户端的网络访问连接请求,将请求有策略地转发给网络中实际工作的业务服务器,并将业务服务器处理的结果返回给发起连接请求的客户端。反向代理可以隐藏目标服务器的真实身份和位置,客户端只能看到反向代理的IP地址。

二、Proxy 代理

1、模块:ngx_http_proxy_module

2、Proxy 代理实验

(1) nginx 服务器启动网站(192.168.198.133)

vim /usr/share/nginx/html/index.html  为 nginx 服务器配置默认网页

(2) nginx 代理服务器配置(192.168.198.132)

location / {

proxy_pass http://192.168.198.133:80;

proxy_redirect default;

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 30;

proxy_send_timeout 60;

proxy_read_timeout 60;

proxy_buffering on;

proxy_buffer_size 32k;

proxy_buffers 4 128k;

proxy_busy_buffers_size 256k;

proxy_max_temp_file_size 256k;

}

① 代理代理服务器所推送的后端服务器的 URL

proxy_pass http://192.168.198.133:80;   真正的nginx服务器的IP地址

proxy_redirect default;   nginx在处理代理请求时保持默认端口

头信息设置真实客户端地址,让代理器把客户端地址传给服务器,在服务器日志中形成记录

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;          代理服务器接收后端服务器数据的时间

④ 缓冲区的大小和数量

proxy_buffering 开启的情况下,nignx会把业务服务器一部分资源先放到缓冲区中,当用户需要访问时,代理服务器直接交给用户,不需要再访问业务服务器

proxy_buffering on;

proxy_buffer_size 32k;      缓冲区大小

proxy_buffers 4 128k;        缓冲区数量

proxy_busy_buffers_size 256k;   忙碌缓冲区大小

proxy_max_temp_file_size 256k;

(3) 使用客户机访问代理服务器地址

观察 nginx 服务器日志:

192.168.198.132 - - [17/Sep/2023:00:07:25 +0800] "GET / HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.31" "192.168.198.1"

三、Proxy 缓存

1、缓存类型:

① CDN(Content Delivery Network,内容分发网络)

通过在全球各地边缘节点部署服务器群,由CDN服务器分担源站点服务器的压力,用户可以就近获取已缓存的访问资源,避免网络拥堵,加快访问速度。

CDN服务由专业的供应商提供,企业和组织只需注册使用CDN服务,将其内容通过CDN向全球分布的节点传送即可。

② 数据库缓存:

数据库缓存是指将数据存储在内存中,减少对数据库的访问次数,从而提高数据访问速度。常见的数据库缓存技术有 Memcache 和 Redis。

③ nginx-proxy

nginx-proxy是一种基于Nginx的代理服务器,可以用来实现网页缓存。通过配置nginx-proxy,将已经访问过的网页内容存储在本地,以便在下次访问时可以直接从本地读取,不需要再次访问后端服务器。这种技术可以大大提高网页加载速度,减轻服务器的负载。

2、启动缓存

(1) 配置缓存服务器

① vim /etc/nginx/nginx.conf    配置缓存区的规则:

proxy_cache_path /app/bean/cache levels=1:2 keys_zone=proxy_cache:10m max_size=10g inactive=60m use_temp_path=off;

● proxy_cache_path /app/bean/cache   缓存数据的存储位置

● levels=1:2   两级层次结构的目录,各个用户的缓存信息存在独立的目录下

● keys_zone=proxy_cache:10m     缓存区的规则名称 (proxy_cache)

:10m  存储缓存键keys的空间,缓存键的作用是帮助缓存系统快速定位和检索数据

● max_size=10g  存储缓存的数据最大为10g

● inactive=60m   不活跃时间60分钟,如果一个文件在60分钟内没有被请求,则缓存管理会自动删除

② vim /etc/nginx/conf.d/default.conf

proxy_cache proxy_cache;

proxy_cache_valid 200 304 12h;

proxy_cache_valid any 10m;

proxy_cache_key $host$uri$is_args$args;

add_header Nginx-Cache "$upstream_cache_status";

proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

● proxy_cache proxy_cache;   代理器缓存命令 用户自定义的缓存区规则名称

● proxy_cache_valid 200 304 12h; proxy_cache_valid any 10m;

返回状态码为 200 和 304 的数据,可以缓存12h;其他状态码的数据只缓存10分钟。

● proxy_cache_key $host$uri$is_args$args;

缓存区里存储的域名链接很多,且每一个域名链接很长,难以查找,

于是通过哈希算法 (hash) ,将 URL 换算成一串 长度固定,内容唯一 的值,将这串值作为缓存区里对应链接的 key;

当用户来访问时,nginx 代理服务器将用户的 URL 换算成 key,与缓存区里存储的 key 值进行比对,比对成功,说明用户上一次访问在代理服务器里存储过,内容可以由代理服务器直接回给用户 ;比对失败,说明没有缓存,用户请求会推送给后端服务器。

● add_header Nginx-Cache "$upstream_cache_status";

资源返回给用户时显示缓存状态(HIT or miss),是在缓存中获取的数据还是在真实服务器中获取的数据。

●proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

http 返回状态码 5xx 时 (服务器错误状态码),说明后端服务器出现故障,代理服务器会把用户请求转给其他后端服务器。

(2) 客户机访问代理服务器地址

HIT 表示代理服务器存在页面缓存 ;若显示 miss 则表示无缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值