• nginx搭建代理服务器与负载均衡器


    一、代理服务器

    服务   功能 配置语法 默认 配置位置 配置举例  结果验证 备注
    代理服务 反向代理 proxy_pass URL   location、if in location、limit_except这一级来配置

    server {    

        listen       80;    

        server_name  localhost;

            #charset koi8-r;    

        #access_log  /var/log/nginx/host.access.log  main;

           location ~ .php{        

           proxy_pass http://172.20.163.135:80;        

           root index.html;    

    }

    此时访问http://nginx服务器/1.php  相当于访问了http://172.20.163.135/1.php  
    代理服务 正向代理 proxy_pass http://$http_host$request_uri;
    $http_host代表要访问的主机名
    $request_uri代表要访问的URI
        resolver 114.114.114.114;
        location / {
            proxy_pass http://$http_host$request_uri;
        }
    此时挂好代理就可以访问http的网页了,但是不能访问https网页  
    代理的扩展 缓冲区 proxy_buffering on|off proxy_buffering on http、server、location这一级来配置

    location / {        

        proxy_pass http://127.0.0.1:8080;        

        proxy_redirect default;

              proxy_set_header Host $http_host;   ===>要访问的目的主机        

        proxy_set_header X-Real-IP $remote_addr;   ===>客户端真实IP

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  ==>如果使用代理访问的话使用此方式可获取代理链

             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;    

    }

      尽可能的将请求信息接收完再将数据包统一转发出去
    代理的扩展 跳转重定向 proxy_redirect default|off
    proxy_redirect redirect replacement
    proxy_redirect default http、server、location这一级来配置   反向代理时后端服务器发来301报文时不是把301转发给客户端,而是根据301再去访问被重定向到的地址,拿到最终数据后再返回给客户端
    关闭后就直接将301报文转发给客户端
    这个选项一般默认即可
    代理的扩展 修改头信息

    proxy_set_header field value

    扩展:proxy_hide_header、proxy_set_body

      http、server、location这一级来配置 proxy_set_header X-Real-IP $remote_addr;
    访问后端server时增加X-Real-IP头部,值为$remote_addr
    在经过中间这层代理后,后端server就拿不到最初源的一些信息了(比如说真实源IP)。
    为了解决这个问题可以用这个方法为数据包再加一个映射的头信息,好让后端server知道真实的源信息

    代理的扩展

    Nginx作为代理到后端server的超时

    proxy_connect_timeout time

    扩展:proxy_read_timeout、proxy_send_timeout

    proxy_connect_timeout 60s http、server、location这一级来配置  

    TCP连接超时

    扩展:TCP已经建立的基础上等待回应的时间

    测试的时候没测出来有什么效果

    二、负载均衡器

    功能 配置语法

    配置

    位置 

    配置举例

     结果验证

     备注

    负载均衡 upstream name{
        server IP|域名 端口 属性;
    }
    location / {
            proxy_pass http://name;
        }

    http这

    一级来

    配置

    upstream imooc {        

         ip_hash;        

        server 172.20.163.135:80 weight=5;        

        server cctv.com:80;        

        server 172.20.163.126:80 backup;        

        server 172.20.163.123:80 down;        

        server 172.20.163.111:80 max_fails 5;        

        server 172.20.163.33:80 fail_timeout 60s;        

        server 172.20.163.42:80 max_conns 1024;    

    }

    location / {

            proxy_pass http://imooc;    

    }

    访问http://Nginx地址/时

    流量会负载均衡到

    135、123、126

    这三台设备上

    后端服务器在负载均衡调度中的状态:

    down:当前的server暂时不参与负载均衡

    backup:预留的备份服务器(其他主机全部down掉它起来)

    max_fails:允许请求失败的次数(健康检查)

    fail_timeout:经过max_fails失败后,服务暂停的时间

    max_conns:限制后端server最大的接收连接数

    调度算法(默认为轮询):

    轮询:按时间顺序逐一分配到不同的后端服务器

    加权轮询:weight值越大,分配到的概率越高(只要后面加了weight就自动从轮询变为加权轮询)

    ip_hash:每个请求按访问的源IP的hash结果分配,这样可以保证一个源IP的每次访问固定的一台后端

    server url_hash:按照访问的URL的hash结果来分配请求,每个URL定向到同一个后端服务器

    hash关键数值:hash自定义的key

  • 相关阅读:
    gaia 开源多语言的pipeline 平台
    vernemq 集群 docker-compose 搭建简单试用
    nginx http2 push 试用
    几个方便进行micro frontend 开发的工具&&类库
    Compoxure example 应用说明
    Compoxure 微服务组合proxy 中间件
    SCS Characteristics
    How_Require_Extensions_Work
    nodejs-hook 开发
    microcks 微服务mocks 工具&&运行时
  • 原文地址:https://www.cnblogs.com/baihualin/p/10896976.html
Copyright © 2020-2023  润新知