https://nginx.org/en/docs/http/ngx_http_proxy_module.html
Syntax: proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [min_free=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
Default: —
Context: http
Syntax: proxy_cache_key string;
Default:
proxy_cache_key $scheme$proxy_host$request_uri;
Context: http, server, location
Defines a key for caching, for example
proxy_cache_key "$host$request_uri $cookie_user";
By default, the directive’s value is close to the string
proxy_cache_key $scheme$proxy_host$uri$is_args$args;
Syntax: proxy_cache_valid [code ...] time;
Default: —
Context: http, server, location
Sets caching time for different response codes. For example, the following directives
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
set 10 minutes of caching for responses with codes 200 and 302 and 1 minute for responses with code 404.
If only caching time is specified
proxy_cache_valid 5m;
then only 200, 301, and 302 responses are cached.
In addition, the any parameter can be specified to cache any responses:
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
Parameters of caching can also be set directly in the response header. This has higher priority than setting of caching time using the directive.
Processing of one or more of these response header fields can be disabled using the proxy_ignore_headers directive.
nginx 8888 作为反向代理 , 转发到 后端服务 9999 (用nginx模拟)
[root@VM-0-7-centos conf]# cat nginx.conf
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
proxy_cache_path /tmp/nginxcache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
sendfile on;
keepalive_timeout 65;
gzip on;
gzip_min_length 20;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
upstream local {
server 127.0.0.1:9999; # 用nginx 模拟 后端的服务
}
server {
listen 8888;
server_name artisan.nginx.pub;
location / {
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_cache my_cache;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 302 1d;
proxy_pass http://local;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
重点看
proxy_cache_path /tmp/nginxcache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
和
proxy_cache my_cache;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 302 1d;
重启服务
[root@VM-0-7-centos artisan_ng]# pwd
/root/ng/artisan_ng
[root@VM-0-7-centos artisan_ng]# ./sbin/nginx -c ./conf/nginx.conf
[root@VM-0-7-centos artisan_ng]#
[root@VM-0-7-centos artisan_ng]# ps -ef|grep nginx
root 841577 1 0 11:26 ? 00:00:00 nginx: master process ./sbin/nginx -c ./conf/nginx.conf
root 841578 841577 0 11:26 ? 00:00:00 nginx: worker process
root 841579 841577 0 11:26 ? 00:00:00 nginx: cache manager process
root 841580 841577 0 11:26 ? 00:00:00 nginx: cache loader process
root 841605 841385 0 11:26 pts/5 00:00:00 grep --color=auto nginx
[root@VM-0-7-centos artisan_ng]#
[root@VM-0-7-centos artisan_ng]#
[root@VM-0-7-centos artisan_ng]#
查看nginx的进程,会发现 多了 两个进程 nginx: cache manager 和 nginx: cache loader
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
gzip_min_length 20;
gzip_types *;
server {
listen 127.0.0.1:9999; # 仅允许本地访问
#listen 9999;
server_name localhost;
location / {
alias document/; # 模拟静态资源文件
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
重启 nginx
[root@VM-0-7-centos ng]# cd artisan_ng_backserver/
[root@VM-0-7-centos artisan_ng_backserver]# ll
total 40
drwxr-xr-x 2 root root 4096 Oct 4 10:12 client_body_temp
drwxr-xr-x 2 root root 4096 Oct 4 10:43 conf
drwxr-xr-x 3 root root 4096 Oct 4 10:12 document
drwxr-xr-x 2 root root 4096 Oct 4 10:12 fastcgi_temp
drwxr-xr-x 2 root root 4096 Oct 4 10:12 html
drwxr-xr-x 2 root root 4096 Oct 4 10:12 logs
drwxr-xr-x 2 root root 4096 Oct 4 10:12 proxy_temp
drwxr-xr-x 7 root root 4096 Oct 4 10:12 sbin
drwxr-xr-x 2 root root 4096 Oct 4 10:12 scgi_temp
drwxr-xr-x 2 root root 4096 Oct 4 10:12 uwsgi_temp
[root@VM-0-7-centos artisan_ng_backserver]# ./sbin/nginx -c /root/ng/artisan_ng_backserver/conf/nginx.conf
[root@VM-0-7-centos artisan_ng_backserver]#
[root@VM-0-7-centos artisan_ng_backserver]#
[root@VM-0-7-centos tmp]# /root/ng/artisan_ng/sbin/nginx -c /root/ng/artisan_ng/conf/nginx.conf
[root@VM-0-7-centos tmp]#
[root@VM-0-7-centos tmp]#
[root@VM-0-7-centos tmp]# /root/ng/artisan_ng_backserver/sbin/nginx -c /root/ng/artisan_ng_backserver/conf/nginx.conf
[root@VM-0-7-centos tmp]#
[root@VM-0-7-centos tmp]#
[root@VM-0-7-centos tmp]#
[root@VM-0-7-centos tmp]# ps -ef|grep nginx
root 847458 1 0 12:04 ? 00:00:00 nginx: master process /root/ng/artisan_ng/sbin/nginx -c /root/ng/artisan_ng/conf/nginx.conf
root 847459 847458 0 12:04 ? 00:00:00 nginx: worker process
root 847460 847458 0 12:04 ? 00:00:00 nginx: cache manager process
root 847461 847458 0 12:04 ? 00:00:00 nginx: cache loader process
root 847512 1 0 12:05 ? 00:00:00 nginx: master process /root/ng/artisan_ng_backserver/sbin/nginx -c /root/ng/artisan_ng_backserver/conf/nginx.conf
root 847513 847512 0 12:05 ? 00:00:00 nginx: worker process
root 847533 841385 0 12:05 pts/5 00:00:00 grep --color=auto nginx
[root@VM-0-7-centos tmp]#
[root@VM-0-7-centos tmp]#
[root@VM-0-7-centos tmp]# ll
total 4
drwx------ 2 root root 4096 Oct 4 12:04 nginxcache
-rw-r--r-- 1 root root 0 Oct 4 12:04 stargate.lock
[root@VM-0-7-centos tmp]#
[root@VM-0-7-centos tmp]#
[root@VM-0-7-centos tmp]# 启动后 就有 nginxcache 目录了,只不过为空
[root@VM-0-7-centos tmp]# cd nginxcache/
[root@VM-0-7-centos nginxcache]# ll
total 0
[root@VM-0-7-centos nginxcache]#
我们看到 2个 进程都起好了 .
[root@VM-0-7-centos nginxcache]# ll
total 4
drwx------ 3 root root 4096 Oct 4 12:05 b
[root@VM-0-7-centos nginxcache]#
[root@VM-0-7-centos nginxcache]# tree b/
b/
└── d0
└── a2621ddcb53455c06f238e9b4e5a1d0b
1 directory, 1 file
[root@VM-0-7-centos nginxcache]#
[root@VM-0-7-centos nginxcache]# netstat -anp|grep 9999
tcp 0 0 127.0.0.1:9999 0.0.0.0:* LISTEN 847512/nginx: maste
tcp 0 0 127.0.0.1:9999 127.0.0.1:45968 TIME_WAIT -
[root@VM-0-7-centos nginxcache]# kill 847512
[root@VM-0-7-centos nginxcache]#
[root@VM-0-7-centos nginxcache]#
[root@VM-0-7-centos nginxcache]#
[root@VM-0-7-centos nginxcache]# /root/ng/artisan_ng_backserver/sbin/nginx -c /root/ng/artisan_ng_backserver/conf/nginx.conf
[root@VM-0-7-centos nginxcache]#
[root@VM-0-7-centos nginxcache]#
[root@VM-0-7-centos nginxcache]# netstat -anp|grep 9999
tcp 0 0 127.0.0.1:9999 0.0.0.0:* LISTEN 848053/nginx: maste
[root@VM-0-7-centos nginxcache]#
[root@VM-0-7-centos nginxcache]# ll
total 4
drwx------ 3 root root 4096 Oct 4 12:09 b
[root@VM-0-7-centos nginxcache]#
[root@VM-0-7-centos nginxcache]#
[root@VM-0-7-centos nginxcache]#
[root@VM-0-7-centos nginxcache]#
[root@VM-0-7-centos nginxcache]# tree b/
b/
└── d0
└── a2621ddcb53455c06f238e9b4e5a1d0b
1 directory, 1 file
[root@VM-0-7-centos nginxcache]#
又重新缓存了。