负债均衡nginx配置(php)

1.需要准备:

本次配置需要三个服务器(至少两个),(这里使用不同系统/不同服务器商的服务器配置是为了说明不限制服务器)
在此本人使用主服务器A(本地服务器win10),次服务器B(阿里云服务器),次服务器C(腾讯云服务器),三者均安装nginx/mysql/php7.2

测试域名:www.830.com
A服务器ip:127.0.0.1(如果不是使用本地服务器,请进行域名解析)
B服务器ip:##.45.##.2(阿里云服务器)
C服务器ip:##.##.38.3(腾讯云服务器)

2.思路:

将A服务器作为主服务器,域名直接解析到127.0.0.1上(即为在host中添加127.0.0.1 www.820.com),由A服务器负债均衡到B和C服务器上

域名解析:

在win系统下,win+R调出命令行,输入命令ping www.830.com看是否设置成功

命令成功界面
C:\Users\Administrator>ping www.830.com
正在 Ping www.830.com [127.0.0.1] 具有 32 字节的数据:
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64

127.0.0.1 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms

3.nginx配置

A配置:

修改nginx.conf文件(位置在nginx安装目录的conf目录中)
在http段加入以下代码:

#负载均衡
  upstream www.830.com {
    server 81.68.124.227:80;
    server 47.106.93.197:80;
  }
server{
      listen 80;
      server_name www.830.com;
      location / {
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_set_header X-Nginx-Proxy true;


          proxy_pass http://www.830.com;
          proxy_redirect off;
     }
}

可直接加入到server localhost 上面,保存重启nginx

BC配置,同样文件nginx.conf
server{
   listen 80;
   server_name www.830.com;
   index index.html;#根目录下生成index.html用以识别是否负载成功
   root /data0/htdocs/www;#项目根目录
}

保存重启nginx
注意:为了识别是否负载均衡成功,请在三个服务器的根目录下生成不同的index.html文件,用以区分转向的服务器

4.测试:

在本地浏览器输入www.830.com,多次刷新会显示不同的界面

提醒:因为我使用的是本地加服务器域名,所以我这边会出现一个麻烦,就是刚调试完过一会就会被封,要求备案,无法使用;但这是使用本地,要是使用备案过的域名就不会出现这个问题了;

网站暂时无法访问
该网站未根据工信部相关法律规则进行备案

5.将主服务器也作为应用服务器使用,需要添加配置

因为80端口已经被占用,选择另一个端口使用
修改nginx配置文件,添加server

      listen 8080;
      server_name www.830.com;
      index index.html;
      root "D:/phpStudy/PHPTutorial/WWW"; #项目根目录
  }

然后在刚刚A主服务器配置负载均衡中添加一条信息

#负载均衡
  upstream www.830.com {
    server 81.68.124.227:80;
    server 47.106.93.197:80;
    server 127.0.0.1:8080;
  }

即可

一、负载均衡不是nginx独有,著名鼎鼎的apache也有,但性能可能不如nginx。
二、多台服务器提供服务,但域名只解析到主服务器,而真正的服务器IP不会被ping下即可获得,增加一定安全性。
三、upstream里的IP不一定是内网,外网IP也可以。不过经典的案例是,局域网中某台IP暴露在外网下,域名直接解析到此IP。然后又这台主服务器转发到内网服务器IP中。
四、某台服务器宕机、不会影响网站正常运行,Nginx不会把请求转发到已宕机的IP上

此文档已实测,可行,测试时间2020-07-03 11:31:20!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。