之前IT168资讯有介绍《BT宝塔Nginx反向代理导致WordPress登陆问题/缓存设置/缓存目录设置介绍》及《利用BT宝塔面版反向代理/负载均衡/自建CDN加速海外网站访问》,毕竟Nginx环境是一个很…
之前it168资讯有介绍《BT宝塔Nginx反向代理导致WordPress登陆问题/缓存设置/缓存目录设置介绍》及《利用BT宝塔面版反向代理/负载均衡/自建CDN加速海外网站访问》,毕竟Nginx环境是一个很好的反向代理的系统,只需简单设置一下代码即可设置反向代理。也有很多小伙伴不断在研究Nginx的反向代理缓存设置代码。这里it168资讯看到一些不错的Nginx的反向代理缓存设置代码及缓存命令代码全介绍,算是记录一下方便查找吧。
1、不缓存动态页面的代码如下
location ~* \.(php|jsp|cgi|asp|aspx)$
{
proxy_pass https://shopee6.flxzz.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_ssl_name $host;
proxy_ssl_server_name on;
}
2、整个站点全部不缓存,也就是全局不缓存的代码如下:
location /
{
proxy_pass https://shopee6.flxzz.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_ssl_name $host;
proxy_ssl_server_name on;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
proxy_ignore_headers Set-Cookie Cache-Control expires;
add_header Cache-Control no-cache;
expires 12h;
}
3、静态资源缓存7天的代码如下:
location ~* \.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|ico|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|css|js)$
{
proxy_pass https://shopee6.flxzz.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_ssl_name $host;
proxy_ssl_server_name on;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
proxy_ignore_headers Set-Cookie Cache-Control expires;
proxy_cache cache_one;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 301 302 2d;
expires 7d;
}
以上的代码仅做参考。对于Nginx的各种缓存命令看的头大,很多小伙伴又想自由组合,想了解各种Nginx的缓存命令到底是什么意思呢?这里it168资讯举例来详细说明一下各类Nginx的缓存命令。
举个例子:
http{
proxy_connect_timeout 10;
proxy_read_timeout 180;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 96k;
proxy_temp_file_write_size 96k;
proxy_temp_path /tmp/temp_dir;
proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
server {
listen 80 default_server;
server_name localhost;
root /mnt/blog/;
location / {
}
#要缓存文件的后缀,可以在以下设置。
location ~ .*\.(gif|jpg|png|css|js)(.*) {
proxy_pass http://ip地址:90;
proxy_redirect off;
proxy_set_header Host $host;
proxy_cache cache_one;
proxy_cache_valid 200 302 24h;
proxy_cache_valid 301 30d;
proxy_cache_valid any 5m;
expires 90d;
add_header wall "hey!guys!give me a star.";
}
}
# 无nginx缓存的blog端口
server {
listen 90;
server_name localhost;
root /mnt/blog/;
location / {
}
}
}
因为我是在一台服务器上做试验,所以用了两个端口80
和90
进行模拟两台服务器之间的交互。
80
端口对接的是普通的域名访问。90
端口负责处理80
端口代理过来的资源访问。
相当于90
端口是源服务器,80
端口是nginx反向缓存代理服务器。
详细配置解释如下:
http层设置解释
proxy_connect_timeout 10;
proxy_read_timeout 180;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 96k;
proxy_temp_file_write_size 96k;
proxy_temp_path /tmp/temp_dir;
proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
- proxy_connect_timeout
服务器连接的超时时间
- proxy_read_timeout
连接成功后,等候后端服务器响应时间
- proxy_send_timeout
后端服务器数据回传时间
- proxy_buffer_size
缓冲区的大小
- proxy_buffers
每个连接设置缓冲区的数量为number,每块缓冲区的大小为size
- proxy_busy_buffers_size
开启缓冲响应的功能以后,在没有读到全部响应的情况下,写缓冲到达一定大小时,nginx一定会向客户端发送响应,直到缓冲小于此值。
- proxy_temp_file_write_size
设置nginx每次写数据到临时文件的size(大小)限制
- proxy_temp_path
从后端服务器接收的临时文件的存放路径
- proxy_cache_path
设置缓存的路径和其他参数。被缓存的数据如果在inactive参数(当前设置为1天)指定的时间内未被访问,就会被从缓存中移除
server层及反向代理服务器设置解释
server {
listen 80 default_server;
server_name localhost;
root /mnt/blog/;
location / {
}
#要缓存文件的后缀,可以在以下设置。
location ~ .*\.(gif|jpg|png|css|js)(.*) {
proxy_pass http://ip地址:90;
proxy_redirect off;
proxy_set_header Host $host;
proxy_cache cache_one;
proxy_cache_valid 200 302 24h;
proxy_cache_valid 301 30d;
proxy_cache_valid any 5m;
expires 90d;
add_header wall "hey!guys!give me a star.";
}
}
- proxy_pass
nginx缓存里拿不到资源,向该地址转发请求,拿到新的资源,并进行缓存
- proxy_redirect
设置后端服务器“Location”响应头和“Refresh”响应头的替换文本
- proxy_set_header
允许重新定义或者添加发往后端服务器的请求头
- proxy_cache
指定用于页面缓存的共享内存,对应http层设置的keys_zone
- proxy_cache_valid
为不同的响应状态码设置不同的缓存时间
- expires
缓存时间
源服务器设置解释
server {
listen 90;
server_name localhost;
root /mnt/blog/;
location / {
}
}
这里直接处理90
端口接受到的请求,到服务器本地目录/mnt/blog
下抓取资源进行响应。
如何验证缓存是否有效
细心的读者应该发现,我在第二段的栗子里,留了个彩蛋 add_header wall "hey!guys!give me a star."
。add_header
是用于在报头设置自定义的信息。
所以,如果设置缓存有效的话,那么静态资源返回的报头,一定会带上这个信息。
原创文章,作者:admin,如若转载,请注明出处:https://www.it168.online/webtech/3975/