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
posted @ 2019-04-09 15:19  瞎搞的富哥  阅读(245)  评论(0编辑  收藏  举报