nginx 06-Nginx代理服务
Nginx代理服务基本上有三种:
- 正向代理
- 反向代理
- 透明代理
配置语法: proxy_pass URL; (location、if in location,limit_except)
反向代理配置案例
server { listen 80; server_name new.test.com; location ~ /test.html$ { proxy_pass http://127.0.0.1:8080; } }
正向代理配置案例:
server { listen 80; server_name new.test.com; resolver 8.8.8.8; location / { proxy_pass http://$http_host$request_url; } }
透明代理配置案例:
server { listen 80; server_name zabbix.liang.cn; location /{ proxy_set_header host '192.168.10.31'; proxy_set_header referer ''; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://192.168.10.31; } }
代理常用配置
- 缓存区设置(默认打开)
配置语法: proxy_buffering on | off; (http,server,location) 扩展:proxy_buffer_size、proxy_buffers、proxy_busy_buffers_size
- 跳转重定向
配置语法: proxy_redirect default; proxy_redirect off; proxy_redirect redirect replacement; (http,server,location)
- 头信息
配置语法: proxy_set_header field value; 默认: proxy_set-header Host $proxy_host; proxy_set_header Connection close; (http,server,location) 扩展:proxy_hide_header、proxy_set_body
- 超时
配置语法: proxy_connect_timeout time; (http,server,location),默认60s 扩展:proxy_read_timeout、proxy_send_timeout
- 常用代理配置案例
server { listen 80; server_name location; location / { procy_pass http://test; proxy_redirect default; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffer_size 32k; proxy_buffering on; proxy_buffers 4 128k; proxy_busy_buffers_size 256k; proxy_max_temp_file_size 256k; } }
Ngixn负载均衡
配置语法:
upstream name {..} (http)
配置案例:
http{ upstream test { server 192.168.10.10:8080 down; server 192.168.10.10:8081 max_fails=1 fail_timeout=10s; server 192.168.10.11:8080 backup; } server { listen 80; server_name location; location / { procy_pass http://test; } } }
后端服务器在负载均衡调度中的状态
down --当前的server暂时不参与负载均衡 backup --预留的备份服务器 max_fails --允许请求失败的次数 fail_timeout --经过max_fails失败后,服务暂停的时间 max_conns --限制最大的接收连接数
调度算法
- 轮询 --按时间顺序逐一分配到不同的后端服务器
- 加权轮询 --weight值越大,分配到的访问几率越高
- least_conn --最少链接数,那个机器连接数少就分发
- ip_hash --每个请求按访问IP的hash结果分配,这样来自同一个IP的固定访问一个后端服务器
upstream test { ip_hash; server 192.168.10.10:8080; server 192.168.10.10:8081; server 192.168.10.11:8080; }
- url_hash --按照访问的URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
upstream test { hash $request_uri; server 192.168.10.10:8080; server 192.168.10.10:8081; server 192.168.10.11:8080; }
- hash关键数值 --hash自定义的key

更多精彩