Nginx反向代理以及配置优化
jopen
11年前
下面配置包含了,nginx配置的一个比较全面的反向代理的例子:
user www www worker_processes 8; events { use epoll; worker_connections 10240; } pid /opt/work/log/nginx.pid; error_log /dev/null error; http { include /opt/nginx/conf/mime.types; default_type text/html; log_format pv '[$time_local]|$remote_addr|$cookie_SUV|$args|$http_referer|$http_user_agent'; log_format main '$request_time $remote_addr $cookie_SUV [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"' '"$cookie_Fr"'; log_format pbmain '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_user_agent"'; access_log off; sendfile on; keepalive_timeout 0; gzip on; #允许客户端请求的最大单个文件字节数 client_max_body_size 200m; upload_progress proxied 8m; #DNS服务器ip resolver 192.168.1.1; proxy_set_header Host $http_host; proxy_set_header x-forwarded-for $remote_addr; proxy_cache_key "$scheme$host$request_uri"; proxy_cache_path /opt/work/cache levels=1:2:1 keys_zone=js_cache:100m max_size=1024m inactive=15d; proxy_cache_valid any 15d; upstream backend { ip_hash; server 127.0.0.1:8080 weigth=4 max_fails=2 fail_timeout=30s; server 127.0.0.1:8081 weigth=3 max_fails=2 fail_timeout=30s; } upstream liveBackends { server 192.168.1.15:9090; server 192.168.1.16:9090; #备机 server 192.168.1.17:9090 backup; } server{ listen 80; server_name www.myserver1.com; error_log /opt/work/log/nginx_error.log error; client_max_body_size 200m; proxy_set_header Host $http_host; proxy_set_header x-forwarded-for $remote_addr; proxy_buffer_size 64k; proxy_buffers 32 64k; #查看服务状态 location /server-status { stub_status on; access_log off; allow all; } location ^~ /pv { access_log /opt/work/log1/nginx_access.log pv; proxy_pass http://backend; } location ^~ /cc.do { proxy_pass http://backend; } location ^~/favicon.ico{ alias /usr/local/src/web/favicon.ico; } location ^~ /pv2 { access_log /opt/work/log2/nginx_access.log pv; access_log /opt/work/log/main/nginx_access_main.log main; error_log /opt/work/log/error/nginx_error.log error; return 204; } location /proxy/ { #后端返回502,504,执行超时等错误,自动将请求转发到upstream负载池中另一台服务器 proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_pass http://backend; } #禁止访问除以外的其他目录 location /{ deny all; } } server{ listen 80; server_name www.myserver2.com; root /www; location ~ t1\.(gif)$ { root /www; expires -1; access_log /data/log/access.log pbmain; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ~ t2.(gif)$ { root /www; expires -1; access_log /data/log/access.log pbmain; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; if ($args ~ "ltype=1(&|$)") { proxy_pass http://liveBackends; } } location /server-status { stub_status on; access_log off; allow 10.0.0.0/8; allow 192.168.0.0/16; deny all; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
配置完后通过命令 nginx -t (或者nginx -t -c 配置文件路径)来检查配置文件是否有语法错误,没有错误后就可以启动了 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ,用默认路径配置文件的话可以不加-c
从容停止kill -QUIT nginx主进程号
平滑重启 kill -HUP nginx主进程号
配置文件修改可以通过不停机reload的方式实现加载。 nginx -s reload
来自:http://blog.csdn.net/liuzhoulong/article/details/8886585