当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Linux 系统 nginx 服务器安装及负载均衡配置详解

    栏目:Linux/apache问题 时间:2019-11-07 20:21

    nginx(engine x) 是一个 高性能 的 HTTP 和 反向代理 服务器、邮件代理服务器以及通用的 TCP/UDP 代理服务器。其特点为轻量级(占用系统资源少)、稳定性好、可扩展性(模块化结构)、并发能力强、配置简单等。

    本文主要介绍在测试环境中通过 nginx 实现基本的 负载均衡 功能。

    nginx 可以提供 HTTP 服务,包括处理静态文件,支持 SSL 和 TLS SNI、GZIP 网页压缩、虚拟主机、URL 重写等功能,可以搭配 FastCGI、uwsgi 等程序处理动态请求。

    此外,nginx 还可以用于代理、反向代理、负载均衡、缓存等服务器功能,在集群环境中改善网络负载、提高可用性。

    一、搭建测试环境

    这里的测试环境为通过VirtualBox 安装的两台Lubuntu 19.04 虚拟机,Linux 系统安装方法不作赘述。

    为了保证两台 Linux 虚拟机之间的相互访问,虚拟机的网络配置除了默认的 NAT 方式外,还使用了 VirtualBox 软件提供的内部网络(Internal) 联网方式。

    此外,还需要将两台虚拟机中与“内部网络”相关联的网卡,绑定上 同一网段 的静态 IP 地址,则两台主机形成局域网络,相互之间可以直接访问。

    网络配置

    打开 VirtualBox 软件,分别进入两台虚拟机的设置界面,为其添加 连接方式为内部网络 的网络连接,截图如下(两台虚拟机作同样的配置):

    内部网络

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

    $ ip addr
    ...
    2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
     link/ether 08:00:27:38:65:a8 brd ff:ff:ff:ff:ff:ff
     inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
      valid_lft 86390sec preferred_lft 86390sec
     inet6 fe80::9a49:54d3:2ea6:1b50/64 scope link noprefixroute
      valid_lft forever preferred_lft forever
    3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
     link/ether 08:00:27:0d:0b:de brd ff:ff:ff:ff:ff:ff
     inet6 fe80::2329:85bd:937e:c484/64 scope link noprefixroute
      valid_lft forever preferred_lft forever

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

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

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

    network:
     version: 2
     renderer: NetworkManager
      ethernets:
      enp0s8:
       dhcp4: no
       dhcp6: no
       addresses: [192.168.1.101/24]
    #   gateway4: 192.168.1.101
    #   nameservers:
    #     addresses: [192.168.1.101, 8.8.8.8]

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

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

    $ ip addr
    ...
    3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
      link/ether 08:00:27:0d:0b:de brd ff:ff:ff:ff:ff:ff
      inet 192.168.1.101/24 brd 192.168.1.255 scope global noprefixroute enp0s8
        valid_lft forever preferred_lft forever
      inet6 fe80::a00:27ff:fe0d:bde/64 scope link
        valid_lft forever preferred_lft forever