域名上游服务器
- upstream backend {
- server c0.3.cn;
- server c1.3.cn;
- }
上面的配置在加载时,host就会被解析成IP。但是当host的IP变更时,IP不会改变。但是商业版的Nginx是支持动态变更IP的。另外proxy_pass http://c1.3.cn是可以支持动态解析的,但是这样反向代理就只能配置一台了,比较尴尬。还有一种解决方案就是lua脚本动态解析。这里不再赘述了。
备份上游服务器
- upstream backend {
- server 192.168.0.1:8080 weight=1;
- server 192.168.0.2:8080 weight=2 backup;
- }
上面192.168.0.2被配置为备份服务器,当所有上游主机都不存活时,请求就会被转发给备份服务器。
不可用服务器
- upstream backend {
- server 192.168.0.1:8080 weight=1;
- server 192.168.0.2:8080 weight=2 down;
- }
当上游服务器出现故障时,可以通过该配置临时摘除机器。
配置示例
除了反向代理之外,还可以使用缓存来减少上游服务器的压力。
全局配置(proxy cache)
- proxy_buffering on;
- proxy_buffer_size 4k;
- proxy_buffers 512 4k;
- proxy_busy_buffers_size 64k;
- proxy_temp_file_write_size 256k;
- proxy_cache_lock on;
- proxy_cache_lock_timeout 200ms;
- proxy_temp_path /tmp/proxy_temp;
- proxy_cache_path /tmp/proxy_cache levels=1:2 keys_zone=cache:512m inactive=5m max_size=8g;
- proxy_connect_timeout 3s;
- proxy_read_timeout 5s;
- proxy_send_timeout 5s;
开启proxy buffer后,缓存内容将存放在文件系统中,从而提高系统性能。
location 配置
- location ~ ^/backend/(.*)$ {
- # 设置一致性哈希负载均衡key
- set_by_lua_file $consistent_key "lua/balancing.lua";
- # 失败重试配置
- proxy_next_upstream error timeout http_500 http_502 http_504;
- proxy_next_upstream_timeout 2s;
- proxy_next_upstream_tries 2;
- # 请求上游服务器使用GET方法(无论客户端请求方法)
- proxy_method GET;
- # 不给上游服务器传递请求体
- proxy_pass_request_body off;
- # 不给上游服务器传递请求头
- proxy_pass_request_headers off;
- # 设置上游服务器哪些响应头不发送给客户端
- proxy_hide_header Vary;
- # 支持keep-alive
- proxy_http_version 1.1;
- proxy_set_header Connection "";
- # 给上游服务器传递Referer、Cookie和Host(按需传递)
- proxy_set_header Referer $http_referer;
- proxy_set_header Cookie $http_cookie;
- proxy_set_header Host www.moguhu.com;
- proxy_pass http://backend /$1$is_args$args;
- }
通常情况下,为了减少网络开销,一般会使用gzip来减少网络数据包的大小。
- gzip on;
- gzip_min_length 1k;
- gzip_buffers 16 16k;
- gzip_http_version 1.1;
- gzip_proxied any;
- gzip_comp_level 2;
- gzip_types text/plain application/x-javascript text/css application/xml;
- gzip_vary on;
(编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|