• 6.nginx基础知识


    1.nginx基础知识

    1.1 什么是Nginx

    	开源、高性能、可靠的Http Web服务器、代理服务器。
    
    • 1

    1.2 为什么选择Nginx

    	1.高性能、高并发(在访问的高峰期时,nginx能比其他web服务器有更快的响应)
    	2.高扩展性 (可以将功能模块化。 支持官方模块、第三方模块)
    	3.高可靠性(nginx可持续不间断运行) 4个9 5个9
    	4.热部署(可在不停止服务的情况下升级Nginx) 
    	5.公司都选择使用Nginx 
    		1.nginx成熟
    		2.nginx具备非常多的功能 ( 负载均衡、缓存、静态资源加速、web服务、.........waf )
    		3.nginx上手难度较低、配置文件清晰、
    		4.统一技术债  (  nginx apache、)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    1.3 Nginx使用场景

    	1.nginx反向代理
    	2.nginx负载均衡
    	3.nginx HTTPS、Rewrite、
    	4.nginx 限速、限流、等等
    
    • 1
    • 2
    • 3
    • 4

    1.4 Nginx基本安装、配置、启动

    1.配置nginx的官方源,打开nginx.org点击download
    在这里插入图片描述
    2.点击stable and mainline
    在这里插入图片描述
    3.选择对应的系统版本
    在这里插入图片描述
    4.设置 yum 仓库,创建文件 /etc/yum.repos.d/nginx.repo ,写入以下内容(我这里使用稳定版本的)

    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述
    5.安装yum install nginx -y
    在这里插入图片描述

    1.5 nginx的配置文件

    1.nginx 的相关配置文件

    [root@tpl 一 8月 01  18:38 ~]# rpm -ql nginx
    /etc/logrotate.d/nginx           #日志轮转配置文件 ( 按天切割日志 )
    /etc/nginx
    /etc/nginx/conf.d                #编写网站的配置文件 
    /etc/nginx/conf.d/default.conf
    /etc/nginx/fastcgi_params
    /etc/nginx/mime.types            #返回的文件类型  ( 以下载形式回传给浏览器 )
    /etc/nginx/modules
    /etc/nginx/nginx.conf            #重要( 主配置文件 )
    /etc/nginx/scgi_params
    /etc/nginx/uwsgi_params          #结合py
    /usr/lib/systemd/system/nginx-debug.service
    /usr/lib/systemd/system/nginx.service
    /usr/lib64/nginx
    /usr/lib64/nginx/modules
    /usr/libexec/initscripts/legacy-actions/nginx
    /usr/libexec/initscripts/legacy-actions/nginx/check-reload
    /usr/libexec/initscripts/legacy-actions/nginx/upgrade
    /usr/sbin/nginx                  #二进制程序
    /usr/sbin/nginx-debug
    /usr/share/doc/nginx-1.22.0
    /usr/share/doc/nginx-1.22.0/COPYRIGHT
    /usr/share/man/man8/nginx.8.gz
    /usr/share/nginx
    /usr/share/nginx/html
    /usr/share/nginx/html/50x.html
    /usr/share/nginx/html/index.html
    /var/cache/nginx
    /var/log/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
    • 25
    • 26
    • 27
    • 28
    • 29

    2.nginx主配置文件

    [root@tpl 一 8月 01  19:11 ~]# cat /etc/nginx/nginx.conf
    
    user  nginx;                 #运行nginx进程的身份
    worker_processes  auto;      #nginx worker进程数  ( CPU核心保持一致 )
    
    error_log  /var/log/nginx/error.log notice;   #错误日志存放的路径 ( 什么级别的错误才记录 )
    pid        /var/run/nginx.pid;                #nginx进程运行起来会将进程的ID存储在指定的一个文件中
    
    
    events {
        worker_connections  1024;                 #worker最大支持的连接数  worker_connections *  worker_processes
    }
    
    --------------------------------------------------------------------------------------
    #网络层
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;     #如果返回的文件 mime.types 不识别此类型,则默认以下载方式返回给用户
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    ------------------------------------------
    #'$remote_addr(来源IP) - 
    #$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;
    
        include /etc/nginx/conf.d/*.conf;           #包含/etc/nginx/conf.d/下的所有以.conf结尾的文件
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    3.nginx配置文件编写
    例:
    1.在特定路径下编写配置文件

    vim /etc/nginx/conf.d/test.conf
    
    server{  
            listen 80;  #网站监听的端口
            server_name www.test.com;  #定义网站访问的域名
    
            location / {         (location是用于控制用户请求的URI的路径的)
                    root /test;   #定义站点代码存放的路径(根路径)
                    index index.html;    #定义站点默认返回的页面
    
            }
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2.测试时记得修改本地的hosts文件,做个劫持,将IP地址与域名绑定
    192.168.xx.xx www.test.com

    3.根据配置文件,在本地准备一个目录,还有一个配置文件
    在这里插入图片描述

    4.重载nginx
    systemctl reload nginx

    5.查看测试效果:
    在这里插入图片描述

    1.6 如何查找URL中对应服务器的真实文件存放路径

    URL:http://www.test.com/download/test1.txt
    URI:download/test1.txt

    真实的文件存放路径=nginx配置文件中定义的服务根目录+URI
    所以这里的文件真实路径是:/test/download/test1.txt

    1.7nginx虚拟主机

    在一台服务器上运行多个网站。 通过配置虚拟主机的方法来实现。

    	1.基于主机多IP的方式   pass	( 服务器有多个IP,10网段配置一个网站,172网段配置一个网站 )
    	2.基于端口的方式	    公司内部
    	3.基于域名的方式	    必用
    
    • 1
    • 2
    • 3

    基于端口的方式:

    1.编写配置文件

    vim /etc/nginx/conf.d/port.conf
    
    server{
    	listen 81;
    	location / {
    			root /port1;
    			index index.html;
       }
    }
    server{
    	listen 82;
    	location /{
    		root /port2;
    		index index.html;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2.根据配置文件初始化本地目录文件

    mkdir /port1
    echo "port 81" >/port1/index.html
    
    mkdir /port2
    echo "port 82" >/port2/index.html
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.检查语法,重载nginx

    nginx -t 
    systemctl reload nginx 
    
    • 1
    • 2

    4.查看测试结果
    输入81端口:
    在这里插入图片描述
    输入82端口:
    在这里插入图片描述

    基于域名的方式:

    1.编写配置文件

    vim /etc/nginx/conf.d/test.conf
    
    server{  
            listen 80;  
            server_name **www.test.com**;  
    
            location / {        
                    root /test; 
                    index index.html;  
           }
    }
    
    
    
    vim /etc/nginx/conf.d/test1.conf
    
    server{
    	listen 80;
    	server_name **www.test1.com**;
    
    	loction / {
    		root /test1;
    		index index.html;
          }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    2.根据配置文件初始化本地目录文件

    mkdir /test
    echo "test" >/test/index.html
    
    mkdir /test1
    echo "test1" >/test1/index.html
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.做个劫持,将IP地址与域名绑定
    192.168.xx.xx www.test.com
    192.168.xx.xx www.test1.com

    4.检查语法,重载nginx

    nginx -t 
    systemctl reload nginx 
    
    • 1
    • 2

    5.查看测试结果
    输入域名www.test.com
    在这里插入图片描述
    输入域名www.test1.com
    在这里插入图片描述

    1.8结合http协议,nginx整体访问流程

    server{  
            listen 80;   #第一步
            server_name www.test.com;   #第二步
    
            location / {        #第三步
                    root /test;  #第四步
                    index index.html;  #第五步           #第六步,返回/test路径下的文件index.html给浏览器
           }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    1.用户通过浏览器访问www.test.com
    2.浏览器向DNS服务器请求解析域名www.test.com对应的IP地址
    3.DNS服务器将解析出的IP地址返回给浏览器
    4.浏览器通过TCP协议与IP地址对应的服务器80端口建立TCP连接
    5.在TCP连接的基础上,浏览器发起HTTP请求,请求中会携带Headers
    1.请求的域名:www.test.com
    2.请求的方法:GET
    3.请求的路径:/
    4.请求的文档:index.html
    6.服务器做出响应,将/index.html文件返回给浏览器
    7.释放TCP连接
    8.浏览器渲染显示index.html 页面内容

    在这里插入图片描述

  • 相关阅读:
    Android——认识Android (Android发展简介)(一)
    【Linux】进程与服务
    Ubuntu22.04版本侧边栏和顶部栏隐藏与其他版本不同
    vue项目 ueditor使用示例
    解读surging 的内存过高的原因
    PlugLink:让数据分析与工作流无缝连接(附源码)
    QT实现TCP服务器客户端的实现
    HTML 链接
    如何在Spring Boot应用中使用Nacos实现动态更新数据源
    从XSS Payload学习浏览器解码
  • 原文地址:https://blog.csdn.net/Wangjiachenga/article/details/126105687