03.Nginx基本配置2

一. 正向代理

  • 正向代理是一种客户端代理,即代理完成客户端请求的工作,如使用V P N科学上网,访问Google,就是正向代理,正向代理不是本文的重点。
    在这里插入图片描述

二. 反向代理

  • 反向代理是服务端代理,即代理服务端完成响应处理的工作,对用户来说是无感知的。

在这里插入图片描述

代理协议类型:

http        #属于七层的应用层   代理 超文本传输协议
https       #代理 http/https协议
TCP         #属于四层传输层,代理tcp/dupxiey
websocket   #用于开发 代理http1.1长链接 通讯协议
GRPC        #代理go语言远程调用
POP/IMAP    #代理邮件收发协议
RTMP        #代理流媒体,直播

配置proxy_pass

  • proxy_set_header Host $host; #只要用户在浏览器中访问的域名绑定了 VIP VIP 下面有RS;则就用$host ;host是访问URL中的域名和端口 www.taobao.com:80
  • proxy_set_header X-Real-IP $remote_addr;#把源IP 【$remote_addr,建立HTTP连接header里面的信息】赋值给X-Real-IP;这样在代码中$X-Real-IP来获取 源IP
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来,用 【,】隔开;代码中用echo $x-forwarded-for |awk -F, '{print $1}'来作为源IP
  • proxy_http_version 1.0 ;#Nginx服务器提供代理服务的http协议版本1.0,1.1,默认设置为1.0版本。
  • proxy_method get;#支持客户端的请求方法。post/get;
  • proxy_connect_timeout 1; #nginx服务器与被代理的服务器建立连接的超时时间,默认60秒
  • proxy_read_timeout 1;#nginx服务器想被代理服务器组发出read请求后,等待响应的超时间,默认为60秒。
  • proxy_send_timeout 1;#nginx服务器想被代理服务器组发出write请求后,等待响应的超时间,默认为60秒。
  • proxy_ignore_client_abort on; #客户端断网时,nginx服务器是否终端对被代理服务器的请求。默认为off。
  • proxy_ignore_headers "Expires" "Set-Cookie";#Nginx服务器不处理设置的http相应投中的头域,这里空格隔开可以设置多个。
  • proxy_intercept_errors on;#如果被代理服务器返回的状态码为400或者大于400,设置的error_page配置起作用。默认为off。
  • proxy_headers_hash_max_size 1024; #存放http报文头的哈希表容量上限,默认为512个字符。
  • proxy_headers_hash_bucket_size 128; #nginx服务器申请存放http报文头的哈希表容量大小。默认为64个字符。
  • proxy_next_upstream timeout;#反向代理upstream中设置的服务器组,出现故障时,被代理服务器返回的状态值:error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off
  • proxy_ssl_session_reuse on;默认为on,如果我们在错误日志中发现“SSL3_GET_FINSHED:digest check failed”的情况时,可以将该指令设置为off。

配置示例:

worker_processes         1;

events {
    worker_connections       1024;
}

http {
    include                  /data/vhosts/*.conf;
    server {
        listen                  8001;
        server_name             192.168.1.8;

        location / {
            proxy_pass             http://192.168.1.8:8002;
            proxy_set_header       HOST $http_host;
            proxy_set_header       X-Real-IP $remote_addr;
            proxy_set_header       X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_http_version     1.1;
            proxy_connect_timeout  60s;
            proxy_read_timeout     60s;
            proxy_send_timeout     60s;
            proxy_buffering        on;
            proxy_buffer_size      8k;
            proxy_buffers          8 8k;
        }
    }
}

三. 负载均衡

1. 备机策略

  • 当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器。
upstream myServers {
    server 127.0.0.1:8001;
    server 127.0.0.1:8002 backup;     
}

2. 轮询规则

  • 加权轮询: 使用weight=n设置,即根据配置的权重的大小而分发给不同服务器不同数量的请求。如下的服务顺序为:ABBABB...
upstream myServers {
    server 127.0.0.1:8001 weight=1;
    server 127.0.0.1:8002 weight=2;
}
  • IP哈希: 使用ip_hash;标识符,让相同的客户端ip请求相同的服务器。
upstream myServers {
    ip_hash;
    server 127.0.0.1:8001;
    server 127.0.0.1:8002;
}
  • 最少连接:使用least_conn;标识符, 即将请求分配到连接数最少的服务上
  • 时间最短: 使用fair;标识符,即按后端服务器的响应时间来分配请求,响应时间短的优先分配。

3. 重试策略

  • max_fails:允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
upstream myServers {
    server  127.0.0.1:8001 max_fails=3 fail_timeout=10s;
    server  127.0.0.1:8002 max_fails=3 fail_timeout=10s;
}

4. 其他参数

  • down:表示当前的server暂时不参与负载均衡。

配置示例:

worker_processes       1;

events {
    worker_connections     1024;
}

http {
    upstream myServers {
        server                127.0.0.1:8001 weight=1 max_fails=3 fail_timeout=10s;
        server                127.0.0.1:8002 weight=2 max_fails=3 fail_timeout=10s;
    }

    #代理服务
    server {
        listen                80;
        server_name           www.demo.com;

        location / {
            proxy_pass           http://myServers;
            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_next_upstream  http_500 http_502 http_503 error timeout invalid_header;
        }
    }

    #服务实例8001
    server {
        listen                8001;
        server_name           127.0.0.1;
        location / {
            root                 /data/www/demo1;
            index                index.html;
        }
    }

    #服务实例8002
    server {
        listen                8002;
        server_name           127.0.0.1;
        location / {
            root                 /data/www/demo2;
            index                index.html;
        }
    }
}

分别向/data/www/demo1/index.html/data/www/demo2/index.html写入不同的测试内容,访问www.demo.com观察轮询规律…


参考:
https://www.cnblogs.com/hanmk/p/9289069.html
https://blog.csdn.net/qq_33404395/article/details/80523850

发布了49 篇原创文章 · 获赞 29 · 访问量 4834
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览