当前位置 主页 > 服务器问题 > nginx问题汇总 >

    详解Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详(12)

    栏目:nginx问题汇总 时间:2018-11-21 16:18


    6. 缓存变量说明

    $server_addr

    服务器地址,在完成一次系统调用后可以确定这个值,如果要绕开系统调用,则必须在listen中指定地址并且使用bind参数。

    $upstream_cache_status

    0.8.3版本中其值可能为:

    MISS 未命中 EXPIRED - expired。请求被传送到后端。 UPDATING - expired。由于proxy/fastcgi_cache_use_stale正在更新,将使用旧的应答。 STALE - expired。由于proxy/fastcgi_cache_use_stale,后端将得到过期的应答。 HIT 命中
    [root@nginx ~]# vim /etc/nginx/nginx.confproxy_cache_path /data/nginx/cache/webserver levels=1:2 keys_zone=webserver:20m max_size=1g;  server {    listen    80;    server_name localhost;    #charset koi8-r;    #access_log logs/host.access.log main;    #增加两头部    add_header X-Via $server_addr;    add_header X-Cache $upstream_cache_status;    location / {        proxy_pass   http://webservers;        proxy_set_header X-Real-IP $remote_addr;        proxy_cache webserver;        proxy_cache_valid 200 10m;    }}

    7.重新加载一下配置文件

    [root@nginx ~]# service nginx reloadnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful重新载入 nginx:                      [确定]

    8.测试一下

    t12

    注,从图中我们可以看到,我们访问的服务器是192.168.18.208,缓存命中。大家可以看到是不是很直观啊。下面我们看一下缓存目录。

    9.查看一下缓存目录

    [root@nginx ~]# cd /data/nginx/cache/webserver/f/63/[root@nginx 63]# ls681ad4c77694b65d61c9985553a2763f

    注,缓存目录里确实有缓存文件。好了,nginx缓存配置就到这边了,更多配置请根据需要看配置文档。下面我们来说一下,URL重写。

    七、Nginx之URL重写

    1.URL重写模块(Rewrite)

    摘要这个模块允许使用正则表达式重写URI(需PCRE库),并且可以根据相关变量重定向和选择不同的配置。如果这个指令在server字段中指定,那么将在被请求的location确定之前执行,如果在指令执行后所选择的location中有其他的重写规则,那么它们也被执行。如果在location中执行这个指令产生了新的URI,那么location又一次确定了新的URI。这样的循环可以最多执行10次,超过以后nginx将返回500错误。

    break

    语法:break 

    默认值:none 

    使用字段:server, location, if 

    完成当前设置的规则,停止执行其他的重写指令。 

    示例:

    if ($slow) { limit_rate 10k; break;}

    if

    语法:if (condition) { … } 

    默认值:none 

    使用字段:server, location 

    注意:在使用if指令之前请查看if is evil page并且尽量考虑用try_files代替。 

    判断一个条件,如果条件成立,则后面的大括号内的语句将执行,相关配置从上级继承。 

    可以在判断语句中指定下列值: 一个变量的名称;不成立的值为:空字符传”“或者一些用“0”开始的字符串。 一个使用=或者!=运算符的比较语句。 使用符号~*和~模式匹配的正则表达式: ~为区分大小写的匹配。 ~*不区分大小写的匹配(firefox匹配FireFox)。 !~和!~*意为“不匹配的”。 使用-f和!-f检查一个文件是否存在。 使用-d和!-d检查一个目录是否存在。 使用-e和!-e检查一个文件,目录或者软链接是否存在。 使用-x和!-x检查一个文件是否为可执行文件。