广东企业网站建设推荐,一个网站的制作流程,wordpress 页面设置不了标签,深圳宝安住房和建设局网站官网nginx 进阶篇 文章目录nginx 进阶篇一、Nginx Proxy 服务器1、代理原理2、proxy代理3、proxy缓存一、Nginx Proxy 服务器
1、代理原理
正向代理
内网客户机通过代理访问互联网#xff0c;通常要设置代理服务器地址和端口。
反向代理 外网用户通过代理访问内网服务器…nginx 进阶篇 文章目录nginx 进阶篇一、Nginx Proxy 服务器1、代理原理2、proxy代理3、proxy缓存一、Nginx Proxy 服务器
1、代理原理
正向代理
内网客户机通过代理访问互联网通常要设置代理服务器地址和端口。
反向代理 外网用户通过代理访问内网服务器内网服务器无感知。 正向代理与反向代理的区别是什么
2、proxy代理 模块ngx_http_proxy_module 语法
代理 Syntax: proxy_pass_ URL; 代理的后端服务器URL Default _ Context: location,if in location,limit_except
缓冲区 Syntax: proxy_buffering on | off; Default proxy_buffering on | off; # 缓冲开关 Context: http,server,location proxy_buffering 开启的情况下nginx会把后端返回的内容先放到缓冲区当中然后再返回给客户端边收边传不是全部接收完在传给客户端读
Syntax: proxy_buffersnumber size ; Default proxy_buffer_size 4k|8k; # 缓冲区数量 Context: http,server,location
Syntax: proxy_buffer_size size ; Default proxy_buffers 8 4k|8k; # 缓冲区大小 Context: http,server,location
Syntax: proxy_busy_buffers_size size ; Default proxy_busy_buffers_size 8k|16k; # 忙碌缓冲区的大小控制同时传递给客户端的buffer数量 Context: http,server,location
头信息 Syntax: proxy_set_header field value ; Default proxy_set_header Host $proxy_host ; # 设置真实客户端地址 proxy_set_header Connection close; Context: http,server,location
超时
Syntax: proxy_connect_timeout time ; Default proxy_connect_timeout 60s; # 连接超 Context: http,server,location
Syntax: proxy_read_timeout time ; Default proxy_connect_timeout 60s; Context: http,server,location
Syntax: proxy_send_timeout time ; # nginx进程向fastcgi进程发送request的整个过程的超时时间 Default proxy_send_timeout 60s; Context: http,server,location
启用代理 环境两台nginx服务器
IPservername192.168.200.184nginx1192.168.200.186nginx2
两台服务器分别安装好nginx
1.nginx1 启动网站内容
yum install -y nginx
systemctl start nginx[rootnginx1 html]# cat /usr/share/nginx/html/index.html
Hello World!
img srctest.jpg width400 border3 /
[rootnginx1 html]# 2.nginx2 启动代理程序
yum install -y nginx
systemctl start nginx[rootnginx2 html]# vim /etc/nginx/conf.d/default.conflocation / {proxy_pass http://192.168.200.184: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 60;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;# 启动代理程序可以注释掉下面的内容#expires 24h;#root /usr/share/nginx/html;#index index.html index.htm;# root /app;# random_index on;}
[rootnginx2 html]# systemctl restart nginx 3.结果开启代理之后访问192.168.200.184 和192.168.200.186 的内容一样的 4.观察nginx1服务器的日志
[rootnginx1 html]# cat /var/log/nginx/access.log
192.168.200.186 - - [09/Feb/2023:00:18:24 0800] GET /test.jpg HTTP/1.0 200 350627 http://192.168.200.186/ Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 192.168.200.1
访问成功记录了客户机的IP和代理服务器的IP
3、proxy缓存 缓存类型 网页缓存公网CDN 数据库缓存 memcache redis 网页缓存 nginx-proxy 客户端缓存 浏览器缓存 模块ngx_http_proxy_module 语法:
缓存开关 Syntax: proxy_cache zone | off; Default proxy_cache off; Context: http,server,location
代理缓存 Syntax: proxy_cache_path path [levelslevels] keys_zonename:size[inactivetime][max_sizesize]; Default _ Context: http example: proxy_cache_path /data/nginx/cache levels1:2 keys_zoneone:10m;
缓存维度 Syntax: proxy_cache_key string; #定义缓存唯一key通过唯一key来进行hash存取缓存文件名 Default proxy_cache_key schemeschemeschemeproxy_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;
启动缓存
1.延续代理实验环境 2.设置nginx2为缓存服务器
添加如下配置
[rootnginx2 html]# vim /etc/nginx/nginx.conf
http {proxy_cache_path /data/nginx/cache levels1:2 keys_zoneproxy_cache:10m max_size10g inactive60m use_temp_pathoff;
}[rootnginx2 html]# vim /etc/nginx/conf.d/default.conflocation / {proxy_pass http://192.168.200.184: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 60;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;proxy_cache proxy_cache; # proxy_cache 使用名为对应的缓存配置proxy_cache_valid 200 304 12h; # 对httpcode为200...的缓存12小时proxy_cache_valid any 10m; #设置不同响应码的缓存时间除了上面的其他的存10分钟proxy_cache_key $host$uri$is_args$args; # proxy_cache_key $host$uri 定义缓存唯一key通过唯一key来进行hash存取add_header Nginx-Cache $upstream_cache_status; # add_header缓存命中情况如何在http头中体现以及在nginx日志中查看 proxy_cache_path 缓存文件路径proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; # 出现502~504或错误会跳过此服务器访问下一台服务器# 启动代理程序可以注释掉下面的内容#expires 24h;#root /usr/share/nginx/html;#index index.html index.htm;# root /app;# random_index on;}[rootnginx1 ~]# touch test01.txt
[rootnginx1 ~]# touch test02.txt
[rootnginx1 ~]# md5sum test01.txt
d41d8cd98f00b204e9800998ecf8427e test01.txt
[rootnginx1 ~]# md5sum test02.txt
d41d8cd98f00b204e9800998ecf8427e test02.txt
[rootnginx1 ~]# [rootnginx2 data]# mkdir -p /data/nginx/cache
[rootnginx2 data]# cd /data/nginx/cache
[rootnginx2 cache]# ls
[rootnginx2 cache]# systemctl restart nginx
3.使用PC客户机再次访问nginx2服务器 4.通过PC客户机浏览器开发者功能观察是否命中缓存。
命中hit 未命中miss 提示新创建的网页文件初次访问均为miss
nginx缓存工作原理
负载均衡部分讲解