当前位置: 首页 > news >正文

【Nginx01】Ngnix入门

1.版本

  1. Nginx开源版
  2. Nginx plus商业版
  3. Openresty
  4. Tengine

2.Nginx开源版安装

2.1下载

在这里插入图片描述

2.2编译安装

如果本身没有c语言的编译器

命令: yum install -y gcc

解压Nginx

命令: tar -zxvf nginx-1.22.1.tar.gz

在这里插入图片描述
安装perl库

命令: yum install -y pcre pcre-devel

安装zlib库

命令: yum install -y zlib zlib-devel

进入nginx文件夹,用configure脚本来安装

命令: ./configure --prefix=/usr/local/nginx

在这里插入图片描述

命令: make

在这里插入图片描述

命令: make install

在这里插入图片描述
查看是否在刚才所述的路径下/usr/local/nginx

在这里插入图片描述

2.3启动Nginx

首先进入sbin目录

命令1: ./nginx(后台启动)
命令2: ./nginx -s stop 快速停止
命令3: ./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
命令4: ./nginx -s reload 重新加载配置

在这里插入图片描述

关闭防火墙

命令: systemctl stop firewalld

访问nginx
在这里插入图片描述

禁止防火墙开机自启

命令: systemctl disable firewalld

2.4安装成系统服务,即开机自启

1.创建服务脚本

命令: vi /usr/lib/systemd/system/nginx.service

[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

在这里插入图片描述
重新加载系统服务

命令: systemctl daemon-reload

在这里插入图片描述
关闭nginx

命令: ./nginx -s stop

在这里插入图片描述
使用脚本启动nginx

命令: systemctl start nginx

在这里插入图片描述
开机启动命令

命令: systemctl enable nginx

在这里插入图片描述
重启
在这里插入图片描述
发现服务开机自启成功
发现服务开机自启成功

3.目录结构与基本原理

3.1目录结构

在这里插入图片描述

  • conf:核心配置文件
  • sbin:nignx主程序
  • html:默认情况下的网页
  • logs:记录日志

3.2基本运行原理

在这里插入图片描述
Nginx的进程是使用经典的「Master-Worker」模型,Nginx在启动后,会有一个master进程和多个worker进程。master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。worker进程主要处理基本的网络事件,多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。worker进程的个数是可以设置的,一般会设置与机器cpu核数一致,这里面的原因与nginx的进程模型以及事件处理模型是分不开的。

3.3Nginx配置文件

先将注释全部删除,后面会讲,先将没注释的

worker_processes  1; #允许进程数量,建议设置为cpu核心数或者auto自动检测,注意Windows服务器上虽然可以启动多个processes,但是实际只会用其中一个

events {
    #单个进程最大连接数(最大连接数=连接数*进程数)
    #根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。
    worker_connections  1024;
}


http {
    #文件扩展名与文件类型映射表(是conf目录下的一个文件)
    include       mime.types;
    #默认文件类型,如果mime.types预先定义的类型没匹配上,默认使用二进制流的方式传输
    default_type  application/octet-stream;

    #sendfile指令指定nginx是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度。
    sendfile        on;
    
     #长连接超时时间,单位是秒
    keepalive_timeout  65;

 	#虚拟主机的配置,也可以配置多个主机(监听端口号不能相同)
    server {
    	#监听端口
        listen       80;
        #域名或主机名,可以有多个,用空格隔开
        server_name  localhost;

		#配置根目录以及默认页面
		#http://atguigui.com/xxoo/index.html
        location / {
            root   html;
            index  index.html index.htm;
        }

		#出错页面配置
		#http://atguigui.com/xxoo/50x.html
        error_page   500 502 503 504  /50x.html;
        #/50x.html文件所在位置
        location = /50x.html {
            root   html;
        }
        
    }

}

无sendfile
在这里插入图片描述
有sendfile
在这里插入图片描述

相关文章:

  • 网站做301的坏处/电商网站建设价格
  • 软件定制价格/baiduseoguide
  • 新疆电子商务网站建设/今天的重要新闻
  • 前端网站开发教程/交换链接或称互惠链接
  • 国内app开发公司/简述优化搜索引擎的方法
  • 中英文双语网站 滑动切换/我想做网络推广
  • 智能边缘网关
  • Spring REST风格
  • exec函数族详解
  • Android系统启动(四) — Launcher 启动过程
  • 2.2总线的性能指标
  • pod私有库
  • 曲线曲率介绍和python求法
  • Spring之AOP简单讲解
  • 解决Vue3中使用setup如何定义组件的name属性
  • antd 类组件swiper中的指示器和ref
  • 自主异常检测算法(Matlab代码实现)
  • java中的位运算符