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

   日期:2020-11-02     浏览:114    评论:0    
核心提示:一、Nginx介绍1.1 引言为什么要学习Nginx?问题场景:客户端到底要将请求发送至哪台服务器?如果所有请求都发送到了服务器1,那么其他的服务器貌似都没什么用服务器搭建集群后:服务器搭建集群后,使用Nginx做反向代理服务器1.2 Nginx背景Nginx是由俄罗斯人研发的,应对Rambler的网站,并且2004年发布了第一个版本Nginx的特点:稳定性极强。7*24小时不间断运行。Nginx提供了非常丰富的配置实例。占用内存小,并发能力强能承受5w并

一、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; #代表以列表的形式展示静态资源下的全部内容
}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服