反向代理:


location / {
        #设置主机头和客户端真实地址,以便服务器获取客户端真实IP
        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_buffering off;
         
        #设置反向代理的地址
        proxy_pass http://192.168.1.1;       
}


负载均衡:


upstream webservs{
        # 设置 访问IP固定同一服务器
        ip_hash;
        # 权重为5 最大连接错误数2 最大过期时间10S
        server  astarblog.cn weigt=5 max_fails=2 fail_timeout=10;
        # 权重为2 (想哪台服务处理更多的请求,将权重调低)
        server  127.0.0.1:8080 weight=3;
        server  127.0.0.1:8080 weight=1 backup;
        }
        
server{
        location / {
            #  webservs 对应 upstream 设置的值
             proxy_pass http://webservs;
        }
}


负载均衡==分文件:

# 设置PHP负载均衡
upstream phpsrvs{
        server
        server
}
# 设置图片负载均衡
upstream imgsrvs{
        server
        server
}
# 默认负载均衡
location /{
        root /web/htdocs;
        index index.php index.html;
}
# 设置PHP负载均衡
location ~* \.php${
        proxy_pass http://phpsrvs;
}
# 设置图片负载均衡
location ~* "\.(jpg|jpeg|gif|png)"{
        proxy_pass http://imgsrvs;
}

缓存:

 #设置Web临时缓存区
proxy_temp_path /data/nginx/cache/proxy_temp_path ;

#设置Web缓存区名称为cache_one,内存缓存空间大小为50M,自动清除超过1天没有被 访问的缓存数据,硬盘缓存空间大小为10G

proxy_cache_path /data/nginx/cache levels=1:2:1 keys_zone=cache_one:50m max_size=10g inactive=1d;

server{
    location / {
         proxy_pass  http://webservs/;
         #使用Web缓存区cache_one
                  proxy_cache cache_one ;
                  #对不同HTTP状态码缓存设置不同的缓存时间
                  proxy_cache_valid 200 304 12h ;
                  proxy_cache_valid 301 302 1m ;
                  proxy_cache_valid any 1m ;
                  #设置Web缓存的Key值,Nginx根据Key值md5哈希存储缓存,这里根据"域名,URI,
                  #参数"组合成Key
                  proxy_cache_key $host$uri$is_args$args;
    }
}


压缩:

# 开启Gzip
gzip on;
# 不压缩临界值,大于1K的才压缩,一般不用改
gzip_min_length 1k;
#buffer,就是,嗯,算了不解释了,不用改
gzip_buffers 4 16k;
# HTTP/1.1  HTTP协议版本
#gzip_http_version 1.1;
# 压缩级别,1-10,数字越大压缩的越好,时间也越长
gzip_comp_level 2;
# 进行压缩的文件类型,缺啥补啥就行了
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
#跟Squid等缓存服务有关  
gzip_vary off;
#IE6对Gzip不怎么友好,不给它Gzip了
gzip_disable "MSIE [1-6]\.";

rewrite 重写模块:


location /images/{
        rewrite http://127.0.0.1/images/
        rewrite ^/bbs/(.*) http://127.0.0.1/forum/$i;
}
 支持正则表达式
last本次重写完成之后,重记号下一轮检查
break本次重写完成之后,直接响应 执行后续操作
redirect临时
permanent   永久


读写分离:

location /{
    # 默认访问 服务器
    proxy_pass http://127.0.0.1;
    # 如果是写的请求,
    if($request_method = "PUT")
        proxy_pass http://127.0.0.2
}

ps -ef | grep nginx

kill -QUIT 2072   从容停止

kill -TERM 2072   快速停止

pkill -9 nginx    强制停止


./nginx -t 验证配置文件是否正确


./nginx -s reload 重新加载



信号控制

HUP重启

QUIT从容关闭

TERM快速关闭

INT从容关闭

USR1切换日志文件

USR2平滑升级可执行进程

WINCH从容关闭工作进程


平滑升级

cp -rfp nginx.new nginx.old



基本配置


ifconfig etho:1 192.168.1.1


日志文件格式配置

log_format

日志文件存储路径配置

access_log

日志文件切割

(手动)

mv access.log new.log

kill -USR1 2514

(自动)

crontab -e

#! /usr/bin

D=$(date +%Y+%m%d)

mv access.log ${D}.log

kill -USR1 $(cat nginx.pid)