nginx负载均衡配置

本文档介绍了如何在Linux虚拟机中配置Nginx进行负载均衡。首先,通过netplan为两台虚拟机设置静态IP,然后通过apt-get安装预编译的Nginx。接着,利用upstream在server1上配置负载均衡,将server2设为应用服务器。最后,分别配置两个虚拟主机站点,分别提供不同的index页面,并通过重启Nginx服务完成负载均衡设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.打开 VirtualBox 软件,分别进入两台虚拟机的设置界面,为其添加 连接方式为内部网络 的网络连接

2.登录进虚拟机系统,使用 ip addr 命令查看当前的网络连接信息

3.

可以看到,此时的 enp0s8 网卡还没有绑定 IPv4 地址,需要为其手动指定静态 IP。

需要 注意 的是,从 Ubuntu 17.10 版本开始,一个新的名为 netplan 的工具被引入,原来的网络配置文件 /etc/network/interfaces 不再生效。

所以为网卡设置静态 IP 时需要修改 /etc/netplan/01-network-manager-all.yaml 配置文件

4.

由于两台主机处于同一子网,网关和 DNS 服务器未配置的情况下仍可以互相访问。对应的配置项暂时先注释掉(后续可以尝试自行搭建 DNS 服务器)。

编辑完成后运行 sudo netplan apply 命令,前面配置的静态 IP 即可生效。

5.

登录进另一台虚拟机中,执行同样的操作(注意配置文件中的 addresses 项改为 [192.168.1.102/24] )。两台虚拟机的网络即配置完成。

此时有 Linux 虚拟机 server1,IP 地址为 192.168.1.101;Linux 虚拟机 server2,IP 地址为 192.168.1.102。两台主机可相互访问。

6.

登录进另一台虚拟机中,执行同样的操作(注意配置文件中的 addresses 项改为 [192.168.1.102/24] )。两台虚拟机的网络即配置完成。

此时有 Linux 虚拟机 server1,IP 地址为 192.168.1.101;Linux 虚拟机 server2,IP 地址为 192.168.1.102。两台主机可相互访问。

7.

nginx 的安装方式主要有两种:

  • 预编译的二进制程序。这是最简单和最快速的安装方式,各主流操作系统都可以通过包管理器(如 Ubuntu 的 apt-get)安装。此种方式会安装几乎所有的 官方 模块或插件。
  • 从源代码编译安装。这种方式相对于前者更加灵活,可以自行选择需要安装的模块或第三方插件。

本示例并没有特殊的需求,所以直接选择第一种安装方式。命令如下:

$ sudo apt-get update

$ sudo apt-get install nginx

8.安装成功后,通过 systemctl status nginx 命令查看 nginx 服务的运行状态

9.

nginx 可以通过 upstream 选项配置负载均衡。这里使用虚拟机 server1 作为负载均衡服务器。

修改 serve1 上默认站点的配置文件( sudo vim /etc/nginx/sites-available/default ),改为如下内容:

1

2

3

4

5

6

7

8

9

10

11

upstream backend {

  server 192.168.1.102:8000;

  server 192.168.1.102;

}

server {

  listen 80;

  location / {

    proxy_pass http://backend;

  }

}

基于测试的目的,当前只有两台虚拟机。server1(192.168.1.101)已经作为负载均衡服务器,所以使用 server2(192.168.1.102)作为应用服务器。

这里借助 nginx 的虚拟主机功能,分别将 192.168.1.102 和 192.168.1.102:8000 “模拟”为两台不同的应用服务器。

应用服务器

修改 server2 上默认站点的配置文件( sudo vim /etc/nginx/sites-available/default ),改为如下内容:

1

2

3

4

5

6

7

8

9

10

11

12

13

server {

    listen 80;

    root /var/www/html;

    index index.html index.htm index.nginx-debian.html;

    server_name 192.168.1.102;

    location / {

        try_files $uri $uri/ =404;

    }

}

在 /var/www/html 目录下创建 index.html 文件,作为 default 站点的 index 页面,内容如下:

1

2

3

4

5

6

7

8

<html>

  <head>

    <title>Index Page From Server1</title>

  </head>

  <body>

    <h1>This is Server1, Address 192.168.1.102.</h1>

  </body>

</html>

运行 sudo systemctl restart nginx 命令重启 nginx 服务,此时访问http://192.168.1.102 即可获取刚刚创建的 index.html 页面:

1

2

3

4

5

6

7

8

9

$ curl 192.168.1.102

<html>

  <head>

    <title>Index Page From Server1</title>

  </head>

  <body>

    <h1>This is Server1, Address 192.168.1.102.</h1>

  </body>

</html>

配置“另一台主机”上的站点,在 server2 上创建 /etc/nginx/sites-available/server2 配置文件,内容如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

server {

    listen 8000;

    root /var/www/html;

    index index2.html index.htm index.nginx-debian.html;

    server_name 192.168.1.102;

    location / {

        try_files $uri $uri/ =404;

    }

}

注意监听端口和 index 页面的配置变化。在 /var/www/html 目录下创建 index2.html 文件,作为 server2 站点的 index 页面,内容如下:

1

2

3

4

5

6

7

8

<html>

  <head>

    <title>Index Page From Server2</title>

  </head>

  <body>

    <h1>This is Server2, Address 192.168.1.102:8000.</h1>

  </body>

</html>

PS:为了测试目的,default 站点和 server2 站点配置在同一个主机 server2 上,且页面稍有不同。实际环境中通常将这两个站点配置在不同的主机上,且内容一致。

运行 sudo ln -s /etc/nginx/sites-available/server2 /etc/nginx/sites-enabled/ 命令启用刚刚创建的 server2 站点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值