一、配置多IP,多端口,多域名

搭建一个虚拟机多IP进行多个访问服务

一个企业通常会有多个服务在一台服务器上,但是一个服务对应ip:port,这个时候要么换端口,要么配置多个IP,或者增加网卡达到增加IP的效果。接下来做的是在一个网卡下配置子ip的步骤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ip a #查看网卡名和信息
nmcli connection modify ens33 +ipv4.address 192.168.146.131/24 #配置子IP,注意ip不要冲突
nmcli connection reload ens33 #重新加载网卡
nmcli connection up ens33

#然后配置两个IP的nginx的conf文件,下面示例一个
#ip130.conf
server {
listen 80;
server_name 192.168.146.130;

location / {
root /html/nginx/ip130;
index index.html;
}
}
nginx -t
systemctl reload nginx
#然后分别curl下两个IP,看显示的内容对不对
curl 192.168.146.130

如果报403错误,检查涉及的目录权限,index文件是否存在,selinux是否关闭. 如果想要修改子IP或者删除IP,使用nmcli connection modify ens33 ipv4 “192.168.146.130/24,192.168.146.132/24”,它会将131的ip改成132,因为nmcli中的ipv4.address是一个列表属性,可以理解成数组,从上到下展示。

配置多个端口

这个比较简单,在conf文件内直接复制下server块,把端口改一下就好,如果想要该root文件也可以,这样就实现了同一ip不同端口访问不同的服务

配置多个域名

这个和第一个比较像,区别就是把server_name后面改成域名,在没有申请多个域名的情况下,可以在/etc/hosts文件内增加‘IP 域名’,达到本地域名服务

alias,rewrite

  1. alias是将原本root后面的目录直接用对应的目录代替,原本的目录访问是root+locatio路径的拼接,使用alias后就是直接替换
    1
    2
    3
    4
    5
    6
    7
    8
    9
    server {
    listen 80;
    server_name 192.168.146.130;

    location /static/ {
    alias /html/nginx/ip130/;#使用alias后,static等于/html/nginx/ip130/,需要注意的是,后面的斜杠不很少
    index index.html;
    }
    }
  2. rewrite重定向,他将原访问路径的指向重新指定为另一个目录
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    server {
    listen 80;
    server_name 192.168.146.130;

    location / {
    rewrite ^/$ /html permanent;
    #表示永久根路径重定向
    #后面还可以选:last 停止当前匹配,用重写后的URI重新匹配其他location块
    #redirect,返回302临时重定向,浏览器地址栏变化
    #permanent,返回301永久重定向,SEO友好,浏览器会缓存
    #break,停止所有`rewrite`处理,直接使用重写后的URI
    index index.html;
    }

    location /html {
    root /html/nginx/ip130;
    index index.html;
    }
    }

二、反向代理和负载均衡配置

基本介绍

  • 反向代理是在原真实服务器的基础上,用另外一台服务器来监听服务,然后将收到的请求转发到真实的后台服务器(RS),只需要在conf配置文件中加一个proxy_pass参数,只想RS服务器的IP就可以,也就是说,这个服务最少要两台服务器。
  • 负载均衡的配置和反向代理配置差不多,区别就是在conf文件下多了一个upstream块,然后proxy_pass的指向变为了upstream后接的名字。

实例

在做以下实验前请检查:1.selinux是否关闭。2.firewalld是否关闭。3.nginx访问目录权限的所属组和主是否更改为nginx
Server IP:

LB:192.168.146.134
RS-A:192.168.146.130
RS-B:192.168.146.133

LB的配置:

1
2
3
4
5
6
7
8
9
10
11
12
upstream LB_Proxy{
server 192.168.146.130:80
server 192.168.146.133:80
}
server{
listen 80;
server_name 192.168.146.134;

location / {
proxy_pass http://LB_Proxy;
}
}

RS-A的配置:

1
2
3
4
5
6
7
8
9
server{
listen 80;
server_name 192.168.146.130;

location / {
root /html/nginx/ip130;
index index.html;
}
}

RS-B的配置和RS-A一致,只需要把ip和路径修改一下就可以。
在做完以上配置后,记得重新加载nginx服务,然后每台服务器先curl一下自己,看有没有问题。最后用LB分别curl另外两台,看结果有没有变,变化了就代表负载均衡策略生效了。