Nginx反向代理、负载均衡、缓存、URL重写及读写分离

nginx.conf:

        main,worker_process、error_log、user、group;

        event{} 事件驱动相关

        httpd{} 关于http相关的配置

        server{} 虚拟主机

        upstream NAME{}负载均衡模块

            需定义在server之外

        location URI{}  URI访问属性

            location URI {}:
               对当前路径及子路径下的所有对象都生效;
            location = URI {}:
               精确匹配指定的路径,不包括子路径,因此,只对当前资源生效;
            location ~ URI {}:
            location ~* URI {}:
              模式匹配URI,此处的URI可使用正则表达式,~区分字符大小写,~*不区分字符大小写;
            location ^~ URI {}:
                不使用正则表达式

一、反向代理。

location /luntan {
                proxy_pass http://192.168.1.32/bbs;
        }
location ~* /luntan {       #使用正则表达式匹配,不能使用URI
                proxy_pass 
                proxy_set_header X-Real-IP $remote_addr;   #传送给后端真实源地址
        }
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf    #后端web服务器修改日志格式
LogFormat "%{X-Real-IP}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

二、负载均衡,三种方式:round-robin、ip_hash、least_conn

upstream abc {
        ip_hash;    #配置此方式不能配置sorry_server
        server 192.168.1.31 weight=1;  #指定权重才能负载均衡
        server 192.168.1.32 weight=1 max_fails=3 fail_timeout=30s;  #RS健康状况检查
        server 127.0.0.1:8080 weight=1 backup;   #当所有后端web故障时,指定sorry_server
        }
location / {                    #指定可负载均衡的URI
                proxy_pass    
        }
server {           #配置sorry_server
        listen 8080;
        server_name localhost;
        root /web/errorpages;
        }

三、缓存

http {        #proxy_cache_path不能定义在server{}上下文
    proxy_cache_path  /data/nginx/cache  levels=1:2    keys_zone=NAME:10m 
                                         inactive=24h  max_size=1g;
      }
#levels:子目录等级;keys_zone:共享内存命名及大小;max_size:缓存目录大小
location / {
                proxy_pass http://lsq;
                proxy_cache NAME;     #keys_zone共享内存名称
                proxy_cache_valid 200 10m;    #返回码缓存时间,即返回码200缓存10分钟
        }

四、读写分离。

location / {
            root   html;
            index  index.html index.htm;
            if ($request_method ~* "PUT") {
                proxy_pass http://192.168.1.31;
                break;
            }
        }


你可能感兴趣的:(nginx,cache,lb)