Nginx是什么?怎么用?(新手入门版)教程

一、Nginx介绍

1.1 引言
  • 为什么要学习Nginx?
  • 问题场景:
    1. 客户端到底要将请求发送至哪台服务器?
    2. 如果所有请求都发送到了服务器1,那么其他的服务器貌似都没什么用

服务器搭建集群后:
在这里插入图片描述
服务器搭建集群后,使用Nginx做反向代理服务器
在这里插入图片描述

1.2 Nginx背景
  • Nginx是由俄罗斯人研发的,应对Rambler的网站,并且2004年发布了第一个版本
  • Nginx的特点:
    1. 稳定性极强。7*24小时不间断运行。
    2. Nginx提供了非常丰富的配置实例。
    3. 占用内存小,并发能力强
    4. 能承受5w并发

二、Nginx安装(重点来喽)

2.1 安装Nginx

思路:使用docker在linux服务器上安装,如果没有docker可参考 ↓↓↓(温馨提示:超简单)

https://blog.csdn.net/Object_de_Father/article/details/109427164

下面我们撸起袖子开始干代码:

version: '3.1'
services:
  nginx:
	 restart: always
	 image: daocloud.io/library/nginx:1.13.0-alpine
	 container_name: nginx
	 ports:
	 	- 80:80
2.2 Nginx的配置文件
user  nginx;
worker_processes  1;	//这个值的大小和并发量有关系,值越大支持并发量越大

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;//这个值的大小和并发量有关系,值越大支持并发量越大
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

- nginx.conf 1/32 3%

2.3修改Docker-compose文件
version: '3.1'
services:
  nginx:
    restart: always
    container_name: nginx
    ports:
      - 80:80
    volumes:
      - /root/app/nginx/conf.d/:/ect/nginx/conf.d

三、Nginx的反向代理

3.1 正向代理
  1. 正向代理时由客户端设立的。
  2. 客户端了解代理服务器和目标服务器都是谁。
  3. 帮助咱们突破访问权限,提高访问的速度,对目标服务器隐藏客户端的ip地址。
3.2 反向代理
  1. 反向代理服务器适配实在服务端的。
  2. 客户端是不知道访问的到底是哪一台服务器。
  3. 达到负载均衡,并且可以隐藏服务器真正的ip地址
3.3 基于Nginx实现反向代理
  1. 准备一个目标服务器(tomcat)。
  2. 编写nginxdd的配置文件,通过nginx访问到tomcat服务器
server{
    listen 80;
    server_name localhost;
    #基于反向代理访问到tomcat服务器
    location / {
        proxy_pass http://网址:8080/;
    }
}
3.4 关于Nginx的location路径映射
# 1.精准匹配,例如www.baidu.com就能匹配到,www.baidu.com/×××就不行
location = / {
    # 匹配和定制规则完全相同的路径,优先级最高
}

# 2.通用匹配
location /××× {
    # 匹配所有以/×××开头的路径
}

#3.正则匹配
location ~/××× {
    # 匹配所有以/×××开头的路径,优先级要高于通用匹配
}

#4.匹配开头路径
location ^~ /laojiang/{
    # 匹配所有以laojiang开头的路径,优先级高于正则匹配
}

#5.匹配指定格式路径
~*\.(gif|jpg|png)$ {
    # 匹配以gif或者jpg或者png为结尾的路径
}

四、Nginx的负载均衡

4.1 Nginx默认提供了三种负载均衡策略:
  1. 轮询法
    1. 将客户端发起的请求,平均的分配给每一台服务器。
  2. 加权法
    1. 会将客户端的请求,根据服务器的权重值不同,分配不同的数量。
  3. ip_hash法(源hash法)
    1. 基于发起请求的客户端的ig地址不同,他始终会将请求发送到指定的服务器上。|
4.2 轮询法
  • 想要实现Nginx轮询负载均衡机制只需在文件中添加以下内容

    upstream 自定义名称 {
        server 路径(ip:port);
        server 路径(ip:port);
        ...
    }
    server{
        listen 80;
        server_name localhost;
        
        location / {
            proxy_pass http://上面upstream的名称/;
        }
    }
    
4.3 加权法
  • 实现加权法的方式。在轮询法的基础之上进行

    upstream 自定义名称 {
        server 路径(ip:port) weight 加权数;//这里就是和轮询法重要的区别
        server 路径(ip:port) weight 加权数;
        ...
    }
    
4.4 ip_hash法(源hash法)
  • 实现ip_hash法(源hash法)的方式。在轮询法的基础之上进行

    upstream 自定义名称 {
        ip_hash;	//加在在这里哦
        server 路径(ip:port);
        server 路径(ip:port);
        ...
    }
    

五、Nginx的动静分离

  • Nginx的并发公式:
    • worker_processes * connections / 4 | 2 =Nginx最终的并发能力
    • 原因:动态资源需要 / 4 ,静态资源需要 / 2
    • Nginx通过动静分离,来提升Nginx的并发能力,更快的给用户响应
5.1 动态资源代理
# 配置如下
location / {
    proxy_pass 路径;
}
5.2 静态资源代理
# 配置如下
location / {
    root 静态资源路径;
    index 默认访问路径下的什么资源;
    autoindex on; #代表以列表的形式展示静态资源下的全部内容
}
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

指陆为码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值