• Nginx目录分级及基本信息介绍


    一、nginx背景介绍

    Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
    其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

    二、nginx常用功能

    • 代理
    • 负载均衡

    三、使用虚拟机进行nginx的学习

    1.配置

    • 内存:建议8G以上

    • 磁盘:建议使用SSD

    • CPU:4核以上主流即可

    2.特点

    • 安装使用简单

    • 使用于传统公司

    • 适用于VPS

    • 适用于高性能服务器部署

    3.环境

    准备:

    • Vmware、Xshell 7、Xftp 7

    • CentOS7.6镜像

    安装与配置操作系统:

    • 配置虚拟机上网

    • 配置静态ip地址

    4.排错

    遇到问题的时候可以从以下几个方面着手,无非就是配置出错或者版本不匹配的问题。

    • Vmware中网关是否正确

    • 直接ping ip是否能通(物理连接排查)

    • 使用和老师一样版本的软件

    • 卸载重装最快

    四、nginx版本介绍

    • 常用版本分为四大阵营

    • Nginx开源版http://nginx.org/

    ​ 免费开源,但是功能只有一些核心功能,需要某些功能的话需要自己在第三方库下载。

    • Nginx plus 商业版https://www.nginx.com

    ​ 收费但是功能齐全,服务优良(公司可以权衡成本与收益后看用开源版还是商业版)

    • Openrestyhttp://openresty.org

    ​ 基于lua脚本的一款。

    • Tenginehttp://tengine.taobao.org/

    ​ 淘宝开源出来的。

    五、开源版安装

    1.下载

    直接去上面四个链接下载自己想要的版本

    在这里插入图片描述

    然后使用xtf或者其他工具将其上传到虚拟机内(这里推荐给他在创建一个文件夹)

    执行以下命令的前提是nginx压缩包在下列nginx文件夹内

    mkdir /usr/local/nginx
    cd /user/local/nginx
    
    • 1
    • 2

    2.解压编译安装与依赖检查

    ①解压
    tar -zxvf nginx-1.23.2.tar.gz 
    
    • 1
    ②依赖检查
    ./configure --prefix=/usr/local/nginx
    
    • 1
    ③常见的几种错误及解决方案
    缺少c语言环境

    编译安装nginx需要使用

    yum install -y gcc
    
    • 1
    缺少PCRE

    在这里插入图片描述

    nginx的http模块使用pcre来解析正则表达式,需要在linux上安装pcre库

    yum -y install pcre-devel
    
    • 1
    缺少zlib library

    在这里插入图片描述

    安装zlib库,nginx使用zlib对http包的内容进行gzip

    yum install -y zlib zlib-devel
    
    • 1
    缺少openssl

    装openssl库,让 nginx 支持 https(即在ssl协议上传输http)

    yum install ‐y openssl openssl‐devel
    
    • 1

    依赖检查成功的结果。
    在这里插入图片描述

    ④编译安装

    请添加图片描述

    make
    make install
    
    • 1
    • 2
    ⑤Nginx启停
    cd /usr/local/nginx/sbin
    ./nginx
    
    • 1
    • 2

    在外部访问

    请添加图片描述

    其他一些命令

    ./nginx -s stop 快速停止
    ./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
    ./nginx -s reload 重新加载配置
    
    • 1
    • 2
    • 3
    ⑥防火墙设置
    • 关闭防火墙 systemctl stop firewalld.service

    • 禁止防火墙开机启动 systemctl disable firewalld.service

    • 放行端口 firewall-cmd --zone=public --add-port=80/tcp --permanent

    • 重启防火墙 firewall-cmd --reload

    ⑦安装成系统服务

    这里注意保持路径的一直性

    • 创建服务脚本
    vim /usr/lib/systemd/system/nginx.service
    
    • 1
    • 服务脚本内容
    [Unit]
    Description=nginx - web server
    After=network.target remote-fs.target nss-lookup.target
    [Service]
    Type=forking
    PIDFile=/usr/local/nginx/logs/nginx.pid
    ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
    ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s stop
    ExecQuit=/usr/local/nginx/sbin/nginx -s quit
    PrivateTmp=true
    [Install]
    WantedBy=multi-user.target
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    重新加载系统服务

    systemctl daemon-reload
    
    • 1

    启动服务

    systemctl start nginx.service
    
    • 1

    开机启动

    systemctl enable nginx.service
    
    • 1

    六、目录结构及基本运行原理

    请添加图片描述

    • 目录

    [root@MyLinux nginx]# tree
    .
    ├── client_body_temp
    ├── conf //用来存放配置文件
    │  ├── fastcgi.conf
    │  ├── fastcgi.conf.default
    │  ├── fastcgi_params
    │  ├── fastcgi_params.default
    │  ├── koi-utf
    │  ├── koi-win
    │  ├── mime.types//规定了返回的文件后缀名对应的响应类型(直接展示还是直接下载?)
    │  ├── mime.types.default
    │  ├── nginx.conf//核心配置文件(可以用来管理其余的配置文件)
    │  ├── nginx.conf.default
    │  ├── scgi_params
    │  ├── scgi_params.default
    │  ├── uwsgi_params
    │  ├── uwsgi_params.default
    │  └── win-utf
    ├── fastcgi_temp
    ├── html //用来存放页面(默认是这里可以进行修改)
    │  ├── 50x.html//服务器错误页面
    │  └── index.html//主页html
    ├── logs//日志文件存放的地方
    │  ├── access.log//普通进程日志文件
    │  └── error.log//错误日志文件
    ├── sbin//存放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

    请添加图片描述

    • 更改默认页

    • 基本运行原理

    七、nginx基础配置

    1.最小配置文件
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       80;
            server_name  localhost;
            location / {
                root   html;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    2.核心配置

    worker_processes

    worker_processes 1; 默认为1,表示开启一个业务进程

    worker_connections

    worker_connections 1024; 单个业务进程可接受连接数

    include mime.types;

    include mime.types; 引入http mime类型

    default_type application/octet-stream;

    default_type application/octet-stream; 如果mime类型没匹配上,默认使用二进制流的方式传输。

    sendfifile on;

    sendfile on; 使用linux的 sendfile(socket, file, len) 高效网络传输,也就是数据0拷贝。

    nginx应用接收到网络上的请求之后,直接将信号发送给网络接口缓存(直接从网络已接口读数据响应出去)

    3.虚拟主机配置
    虚拟主机长什么样子

    以下就是两个主机,一个是aa.aiecp.com,另一个是hh.aiecp.com。使用这两个域名可以将用户的请求分发到不同的路径之下。

    server {
        listen 80; 监听端口号
        server_name aa.aiecp.com; 主机名
        location / { 匹配路径(这里是相对于nginx安装目录来说的)
        	root html; 文件根目录
        	index index.html index.htm; 默认页名称
        }
        #发生错误直接定位到50.html页面(找不到就去html文件夹下找)
        error_page 500 502 503 504 /50x.html; 报错编码对应页面
        location = /50x.html {
        	root html;
        }
    }
    server {
        listen 80; 监听端口号
        server_name hh.aiecp.com; 主机名
        location / { 匹配路径(这里是相对于nginx安装目录来说的)
        	root html; 文件根目录
        	index index.html index.htm; 默认页名称
        }
        #发生错误直接定位到50.html页面(找不到就去html文件夹下找)
        error_page 500 502 503 504 /50x.html; 报错编码对应页面
        location = /50x.html {
        	root 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
    • 26
    主机名匹配规则
    • 完全匹配
      • 我们可以在同一servername中匹配多个域名
      • 例:server_name vod.mmban.com www1.mmban.com;
    • 通配符匹配
      • 可以在该域名下分配二级域名
      • server_name *.mmban.com
    • 通配符结束匹配
      • 将所有后缀域名全匹配到这
      • server_name vod.*;
    • 正则匹配
      • 域名中包含特定字符的都匹配进来
      • server_name ~^[0-9]+.mmban.com$;
    • 小技巧
      • 使用*通配符可以将所有该域名下的子域名匹配进来
      • 可以使用主机匹配规则映射用户二级域名、短网址
      • 匹配的时候优先精准匹配,然后使用正则表达式或者通配符匹配

    后续:虚拟主机的配置


    在这里插入图片描述

  • 相关阅读:
    华为CD32键盘使用教程
    视频号创作分成计划揭秘!300+收益轻松拿,幻术视频成爆款!
    Python语言:经典例题分析讲解
    K8s 环境下. DataGrip连接 kerberos认证的hive
    软考系统架构之案例篇(Redis相关概念)
    机器学习之KNN —— K最近邻分类算法
    Qt OpenGL(二十)——Qt OpenGL 核心模式绘制一个三角形的流程
    [Maven] maven插件系列之maven-shade-plugin
    集成腾讯乐享连接更多应用
    自制操作系统系列(四):进入64位模式
  • 原文地址:https://blog.csdn.net/apple_51931783/article/details/127799738