0%

【Nginx】Nginx配置

关于Nginx中各种配置的实现


1 配置文件

  • nginx配置文件的路径:”/usr/local/nginx/conf/nginx.conf”

1.1 配置文件组成部分

  • (1)全局块
  • nginx配置文件的一些全局配置
·
1
2
work_process 1;
# 并发处理值,值越大,并发处理数越大
  • (2)event块
  • 主要影响nginx服务器与用户的网络连接
1
2
worker_connections 1024;
# nginx支持的最大连接数,与nginx性能关系巨大,需要按需配置
  • (3)http块
  • nginx配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块都在此配置
  • http块可以细分为http全局块、server块
  • http块存在多个Server块
  • (4)http全局块
  • (5)server块
  • 此块与虚拟主机有密切关系,为了节省互联网服务硬件成本
  • server块可以细分为全局server块、location块
  • server块存在多个location块
  • (6)全局server块
1
2
3
4
5
listen 80;
# nginx服务监听的端口号为80

server_name localhost;
# 服务名称为localhost
  • (7)location块
  • 配置请求转发

2 反向代理配置

2.1 tomcat安装配置

  • (2)解压

    1
    tar -zxvf 文件名
  • (3)启动

    1
    2
    # 切换目录到tomcat的bin目录下
    ./startup.sh

2.2 配置实例1

目标:访问指定ip地址,自动转发到tomcat服务中

  • (1)nginx请求转发配置
  • 配置location块,来实现请求转发
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    server {
    # 端口号
    listen 80;
    # 服务名称
    server_name 192.168.85.130;

    # 请求转发地址
    location / {
    root html;
    proxy_pass http://127.0.0.1:8080/;
    index index.html index.htm;
    }
    }
  • (2)测试效果
  • 修改完nginx后,需要重启nginx
  • 浏览器输入:http://服务名称:端口号/转发地址

2.3 配置实例2

目标:根据访问地址的不同,转发到不同的tomcat服务器中

  • (1)准备多一个tomcat服务
  • 复制tomcat文件夹
  • 修改/conf/server.xml中的端口号
  • (2)准备一些静态文件,好进行两端口区分
  • 8080端口在/webapps创建文件夹/edu
  • 8081端口在/webapps创建文件夹/cov
  • 在两文件夹下放入a.html,内容如下文
    1
    <h1>here is 8080/8081!</h1>
  • (3)nginx配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    server {
    # 端口号
    listen 8001;
    # 服务名称
    server_name 192.168.85.130;

    # 转发路径(正则匹配)
    location ~ /edu/ {
    proxy_pass http://127.0.0.1:8080;
    }

    # 转发路径2(正则匹配)
    location ~ /cov/ {
    proxy_pass http://127.0.0.1:8081;
    }
    }
  • (4)防火墙开放8001端口
    1
    2
    3
    4
    5
    # 添加8001端口
    firewall-cmd --add-port=8001/tcp --permanent

    # 重载防火墙
    firewall-cmd --reload
  • (5)测试效果
  • 事先启动tomcat8080、tomcat8081、nginx三个服务
  • 分别访问两个tomcat的静态资源a.html

2.4 补充说明

1
2
3
4
5
6
7
8
location [ = | ~ | ~* | ^~] uri {

}
# location路径有可选选项进行填写
# =:用于不含正则表达式的uri前,要求字符串uri严格匹配
# ~:用于表示uri包含正则表达式,区分大小写
# ~*:用于表示uri包含正则表达式。不区分大小写
# ^~:用于不含正则表达式的uri前,寻找匹配度最高的location后,立即使用此location处理请求

3 负载均衡

3.1 配置步骤

  • (1)准备一个相同的服务
  • 继上面的反向代理,在tomcat8081的/webapps在创建edu目录,并创建文件a.html,内容如下
    1
    <h1>here is 8081!</h1>
  • (2)nginx配置
  • 在http块中进行配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 负载均衡的服务器(名字自定义)
    upstream www.balance.com {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    }

    server {
    # 端口号
    listen 8002;
    # 服务名
    server_name 192.168.85.130;

    # 转发路径(路径为上面负载均衡的服务器名)
    location ~ /edu/ {
    proxy_pass http://www.balance.com;
    }
    }
  • (3)防火墙开放8002端口
    1
    2
    3
    4
    5
    # 添加8001端口
    firewall-cmd --add-port=8002/tcp --permanent

    # 重载防火墙
    firewall-cmd --reload
  • (4)测试效果
  • 记得重新启动tomcat8081和nginx
  • 输入地址后,每次刷新都会切换到不同的tomcat服务(默认轮询算法)

3.2 补充说明

  • Nginx分配策略
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    # 不做任何配置,默认使用轮询:每个请求一个接一个平均分配到不同的服务器中


    # 权重策略:权重越高,分配给该服务器的请求数越多
    upstream www.balance.com {
    server 127.0.0.1:8080 weight=1;
    server 127.0.0.1:8081 weight=2;
    }


    # ip_hash:根据请求ip的hash值进行服务器分配,每个访客的固定在一台服务器,解决session问题
    upstream www.balance.com {
    ip_hash;
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    }


    # fair(公平):根据后端服务器的响应时间来分配,响应时间越短的服务器优先分配请求
    upstream www.balance.com {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    fair;
    }

4 动静分离

4.1 介绍

  • 动静分离:即将动态资源和静态资源部署在不同的服务器中
  • 动态资源:一般指与数据库交互得到的数据
  • 静态资源:一般指前端文件,即html、css、js等
  • 实现思路:通过请求的后缀名不同,来区分动态/静态资源。通过expires参数,设置浏览器缓存,减少服务器请求。如果在指定缓存日期内请求,则会直接发送304状态码,让用户从自家浏览器缓存获取资源(前提服务器最后更新时间与浏览器缓存资源的最后更新时间一致,否则还是会从服务器下载资源)

4.2 配置实例

  • (1)准备静态资源
  • 准备一个图片和html文件
  • (2)nginx配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # 若出现访问403,则需要此设置
    user root;

    http {
    server {
    # 端口号
    listen 8003;
    # 服务名
    server_name 192.168.85.130;

    # 请求转发(正则过滤静态资源)
    location ~ .*\.(jpg|html)$ {
    # 资源存放路径
    root /home/letere/nginx_learn/static/;
    # 资源缓存时间
    expires 7d;
    }
    }
    }
  • (3)防火墙开放8003端口
    1
    2
    3
    4
    5
    # 添加8003端口
    firewall-cmd --add-port=8002/tcp --permanent

    # 重载防火墙
    firewall-cmd --reload
  • (4)测试效果

5 Nginx高可用集群

5.1 keepalived安装

  • 指令:yum -y install keepalived
  • keepalived配置文件路径:/etc/keepalived

5.2 keepalived配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 脚本配置
vrrp_script 脚本名 {
script "脚本路径"
# 脚本执行时间(单位:秒)
interval 数字
}

# 服务器配置
vrrp_instance 服务器名 {
# 服务器是主服务器/备份服务器
state MASTER/BACKUP
# 网卡名称(通过ifconfig查看)
interface 网卡名
# 路由id,同一服务使用同一id值
virtual_router_id id值
# 优先级
priority 数字
# 对外虚拟ip地址
virtual_ipaddress {
id地址
}
}