Nginx代理,反向代理,Nginx负载均衡,Tengine 反向代理

目录

一、Nginx代理 prxoy_pass

二、负载均衡,反向代理 upstream

三、负载均衡权重配置 weight

四、负载均衡 算法选择

五、负载均衡其他选项


        如果您还不会安装Nginx或对Nginx的命令不熟悉,请先看 在CentOS7上安装Nginx,或则直接关注Nginx栏目

一、Nginx代理 prxoy_pass

        需求:通过访问我自己的Nginx服务器,跳转到百度。

        假设我的nginx服务器地址是192.168.108.31。我想访问http://192.168.108.31/baidu时跳转到https://wwww.baidu.com/,可以通过如下配置实现。

        核心部份

        location /baidu {
          proxy_pass https://www.baidu.com/;
        }

      完整配置

worker_processes  1;
events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location /baidu {
          proxy_pass https://www.baidu.com/;
        }

    }

}

           修改完后重新加载配置

sbin/nginx -reload

      

        注意:“https://www.baidu.com/”地址后面有个“/”,他表示根目录。如果没有这个“/”,nginx跳转时会把匹配路径“/baidu”也带过去,最后在地址栏看到的会是这样:“https://www.baidu.com/baidu”。也就是是代理地址有根路径部分,nginx代理时不会把匹配路径带去,否则会把匹配路径带过去。测试时浏览器会有缓存,不是很好测试,建议每次修改后使用浏览器的无痕模式新开窗口。

二、负载均衡,反向代理 upstream

        如果在局域网中有三台主机(分为192.168.108.35,192.168.108.36,192.168.108.37)。想要使用ningx来代理这三个主机,实现负载均衡可以通过配置upstream 来实现。

        如下,使用upstream 关键字定义了一个名为proxyservers后端服务器配置表。在这个配置表中又使用server 关键字定义了三个后端服务器地址和端口。然后添加一个虚拟目录,并在这个虚拟目录中使用proxy_pass代理到刚配置的proxyservers上。

        核心部分

upstream proxyservers{
  server 192.168.108.35:8080;
  server 192.168.108.36:8080;
  server 192.168.108.37:8080;
}

location / {
  proxy_pass http://proxyservers;
}

        完整配置


worker_processes  1;
events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    keepalive_timeout  65;

    upstream proxyservers{
      server 192.168.8.200:8801;
      server 192.168.8.200:8802;
      server 192.168.8.200:8803;
    }

    server {
        listen       80;
        server_name  localhost;

        location / {
          proxy_pass http://proxyservers;
        }

    }

}

        修改完后重新加载配置

sbin/nginx -reload

三、负载均衡权重配置 weight

        配置代理服务器权重使用关键字weight。权重越高ningx将流量转发该服务的机会就越多。

        核心部份

upstream proxyservers2{
  server ip:port weight=1;
  server ip:port weight=1;
  server ip:port weight=1;
}

        完整配置        


worker_processes  1;
events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    keepalive_timeout  65;

    upstream proxyservers{
      server 192.168.8.200:8801 weight=6;
      server 192.168.8.200:8802 weight=4;
      server 192.168.8.200:8803 weight=2;
    }

    server {
        listen       80;
        server_name  localhost;

        location / {
          proxy_pass http://proxyservers;
        }

    }

}

        修改完后重新加载配置

sbin/nginx -reload

四、负载均衡 算法选择

        Nginx 支持多种负载均衡算法:

        1、轮询(Round Robin):这是默认的负载均衡算法。Nginx按照服务器列表的顺序依次将请求分发给后端服务器,直到所有服务器都收到了相同数量的请求。适用于后端服务器性能相近的情况。轮询可配合权重(weight)使用。

        2、IP 哈希(IP Hash):该算法基于客户端的IP地址,将同一客户端的请求始终分发给同一台后端服务器。这对于需要保持会话一致性的应用程序非常有用。

        3、最小连接数(Least Connections):Nginx将请求发送到当前连接数最少的后端服务器,以平衡连接的分布。适用于服务器性能不均匀的情况。最小连接数可配合权重(weight)使用,权重越高的服务器连接数更少。

        4、当然有些版本的Nginx还可以扩展url_hash、 east_time算法,也可以安装相应的插件,或者自己相应的选择算法。

        使用ip_hash算法核心部分

upstream proxyservers3{

  #不配置就是轮询、ip_hash、least_conn
  ip_hash;

  server ip:port weight=1;
  server ip:port weight=1;
  server ip:port weight=1;
}

        修改完后重新加载配置

sbin/nginx -reload

五、负载均衡其他选项

        down:表示当前的server暂时不参与负载

        backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。

        max_conns:最大连接数,可以根据服务硬件情况来设置。如800。

        max_fails:这是一个故障计数器参数,它指定了允许的最大失败次数。如果连续请求该服务器失败的次数达到或超过这个值,Nginx 将将服务器标记为不可用,不再将请求发送给它,直到故障计数器重置。在这个例子中,允许的最大失败次数是 3。公司资源少的话一般设置2~3次,多的话设置1次。

        fail_timeout:失败后超时时间,与max_fails一起使用。如:max_fails=3,fail_timeout=30s代表在30秒内请求某一应用失败3次,认为该应用宕机,后等待30秒,这期间内不会再把新请求发送到宕机应用,而是直接发到正常的那一台,时间到后再有请求进来继续尝试连接宕机应用且仅尝试3次,如果还是失败,则继续等待30秒...以此循环,直到恢复。

        这个部分的配置要参考健康检查(健康检查详情看这里),否则可能运行不起来。

        配置示例


worker_processes  1;
events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    keepalive_timeout  65;

    upstream proxyservers{
      server 192.168.8.201:8801 weight=6 down;
      server 192.168.8.202:8802 weight=4 max_fails=3 fail_timeout=30;
      server 192.168.8.203:8803 weight=2 backup;

      check interval=3000 rise=2 fall=5 timeout=1000 type=http;
      check_http_send "HEAD / HTTP/1.0\r\n\r\n";
      check_http_expect_alive http_2xx http_3xx;
    }

    server {
        listen       80;
        server_name  localhost;

        location / {
          proxy_pass http://proxyservers;
        }

        location /nginx_basic_status {
          stub_status on;
        }

        location /nginx_check_status {
            check_status;
        }

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
***反向代理配置https双机负载均衡的问题,您可以按照以下步骤进行配置: 1. 安装nginx:首先确保已经在服务器上安装了nginx。您可以使用适用于您操作系统的包管理器进行安装,或者从nginx官方网站下载并手动安装。 2. 生成SSL证书:为了启用HTTPS,您需要为每个后端服务器生成SSL证书。您可以使用公开的CA(证书颁发机构)签名证书,或者使用自签名证书。这里以自签名证书为例,在服务器上执行以下命令: ```shell openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /path/to/private.key -out /path/to/certificate.crt ``` 这将生成一个私钥文件 `private.key` 和一个证书文件 `certificate.crt`。 3. 配置nginx:打开 nginx 的配置文件 `nginx.conf`,一般位于 `/etc/nginx/nginx.conf` 或 `/usr/local/nginx/conf/nginx.conf`。确保以下配置已添加或修改: ```nginx http { # ... upstream backend { server backend1.example.com; server backend2.example.com; } server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 可选:添加其他的代理设置 # ... } } } ``` 在上述配置中,`backend1.example.com` 和 `backend2.example.com` 是您的后端服务器的域名或IP地址,您可以根据实际情况进行修改。 4. 重启nginx:保存并关闭 `nginx.conf` 文件。然后使用以下命令重启nginx服务: ```shell sudo service nginx restart ``` 或者 ```shell sudo systemctl restart nginx ``` 这样就完成了nginx反向代理配置https双机负载均衡。现在,当用户访问 `yourdomain.com` 时,nginx将会根据负载均衡算法将请求转发到后端服务器,并通过HTTPS进行加密传输。 请注意,上述示例中的配置仅供参考,请根据您的实际需求进行适当的修改。同时,确保您的后端服务器已经正确配置和运行,并监听适当的端口。 希望以上信息对您有所帮助!如有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QIFU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值