十分钟搞定从安装到全面理解Nginx

Nginx

一、 引言.

  • 为什么要学习Nginx:

    • 客户端需要将请求发送到哪台服务器?
    • 客户端如果将请求都发送到一台服务器上,集群部署没有意义。
    • 客户端请求的动态资源和静态资源是否可以分开。
  • 反向代理服务器,接收客户端请求,根据一定的策略转发到指定的服务器上。
  • 实现客户端请求的负载均衡。
  • 实现请求的动静分离,更快速的给客户端响应。
  • Nginx的并发能力极强。

二、安装Nginx

2.1 简单的安装Nginx
version: "3.1"
services:
  nginx:
    restart: always
    image: 10.0.134.175:5000/nginx:1.13.5-alpine
    container_name: nginx
    ports:
      - 80:80
2.2 查看Nginx的配置文件
  • 全局块:worker_processes指定Nginx的并发能力,一般CPU内核数。
  • events块:worker_connections指定Nginx的并发能力,10000左右。
  • http块:
    • 引入了大量的媒体类型。
    • 引入了conf.d目录下*.conf文件。
  • server块:
    • listen 端口号;
    • server_name 映射的ip;
    • location块:
      • root 指定本地的路径;
      • index 首页;
      • proxy_pass 指定请求转发到哪个服务器上;
2.3 在yml文件中,添加数据卷映射*.conf文件
version: "3.1"
services:
  nginx:
    restart: always
    image: 10.0.134.175:5000/nginx:1.13.5-alpine
    container_name: nginx
    ports:
      - 80:80
    volumes:
      - ./conf:/etc/nginx/conf.d

三、 Nginx的反向代理

3.1 正向代理

在客户端配置代理服务器,客户端将请求发送到代理服务器,并指定代理服务器将请求发送给指定的服务器,可以隐藏客户端信息,提升访问速度。

3.2 反向代理

在服务器端配置的代理服务器,接口全部客户端的请求,根据代理服务器内部的策略,将请求转发到指定的其他服务器上,可以隐藏服务器端的信息。

3.3 配置反向代理
  • 准备目标服务器,保证目标服务器直接访问没有问题。

  • 准备Nginx反向代理服务器,配置Nginx的配置文件

  • location / {
     proxy_pass http://ip:port/;
    }
    

- 客户端发送请求到反向代理服务器,最终呈现出目标服务器的内容。
3.4 location映射请求路径
  • location = 路径:精准匹配,优先级最高。

  • location ^~ 路径:正常匹配,如果匹配上^~不会再向下检索其他映射方式。

  • location ~ 正则表达式:正则匹配,即便匹配上了, 还会继续向下检索其他匹配方式,找到匹配长度最长的路径。

    location ~ \正则表达式$

  • location ~* 正则表达式:忽略大小写的正则,和上述匹配方式一致。

  • location 路径:正常匹配,匹配上后,还会继续向下检索其他匹配方式。

  • location /:匹配全部路径,优先级最低。

四、Nginx的负载均衡

Nginx自带的三种负载均衡策略

  • 轮询:依次将客户端请求分发不同服务器。
  • 权重:根据权重值的比例,将请求分发不同服务器。
  • ip_hash:根据客户端ip地址不同,将请求分发到指定的服务器中。
4.2 实现方式

通过upstream的代码块,将全部集群的节点维护起来:

upstream 集群名称{
server ip:port;
server ip:port;
server ip:port;
server ip:port;
...
}

server{
listen 80;
server_name localhost;

location / {
 proxy_pass http://集群名称/;
}
}
  • 默认就是轮询的方式。

  • 权重只需要在upstream代码块中指定每个server的weight属性即可:

  • upstream 集群名称{
     server ip:port weight=100;
     server ip:port weight=200;
     server ip:port weight=500;
     server ip:port weight=100;
     ...
    }
    

- ip_hash方式:

- ```sh
upstream 集群名称{
 ip_hash;
 ...
}

五、 Nginx的动静分离

5.1 动静分离

为了提升Nginx的并发能力:

  • 动态资源请求需要4个链接数。
  • 静态资源请求需要2个链接数。
5.2 动静分离实现
  • Nginx并发能力公式:

worker_processes * worker_connections / 4:动态资源
worker_processes * worker_connections / 2:静态资源

  • 动态资源实现:

  • location / {
     proxy_pass 动态资源路径;
    }
    
  • 静态资源实现:

location / {
root nginx服务器所在的磁盘路径;
index 指定默认访问的文件;
autoindex on; # 展示当前目录下的全部资源信息
}

六、 Nginx的集群(了解概念就行)

Nginx集群需要使用Keepalived软件来检测Nginx的健康情况,多个Nginx之间的Keepalived是需要通讯的,为客户端提供一个统一的入口,需要使用haproxy实现代理。

搭建Nginx集群,需要在每台Nginx所在服务上,安装Keepalived服务,来监听Nginx的健康情况,Keepalived之间会相互通讯,Master的Nginx宕机了,BackUp的Nginx就可以上位了。

具体配置仅供参考
  • Dockerfile:下载Nginx镜像,并且安装上keepalived软件,在启动容器的同时,启动keepalived和nginx。
  • entrypoint.sh:同时启动keepalived和Nginx的脚本文件。
  • keepalived-master.conf:同时指定了一个虚拟路径172.20.128.50。
  • keepalived-slave.conf:同时指定了一个虚拟路径172.20.128.50。
  • docker-compose.yml:
    • master-nginx:指定了Dockerfile文件,映射数据卷,固定ip。
    • slave-nginx:指定了Dockerfile文件,映射数据卷,固定ip。
    • haproxy:映射了80端口,数据卷映射了haproxy.cfg配置文件。
  • haproxy.cfg:Haproxy映射了172.20.128.50:80端口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值