云原生系列 - Nginx(基础篇)

前言

  1. 学习视频:尚硅谷Nginx教程(亿级流量nginx架构设计)
  2. 本内容仅用于个人学习笔记,如有侵扰,联系删
  3. 学习文档:

1、简介

1.1、背景介绍

Nginx(enginex)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004 年10月4日。

其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx1.0.4发布。

Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

在这里插入图片描述

1.2、名词解释

  1. WEB服务器:
    WEB服务器也叫网页服务器,英文名叫Web Server,主要功能是为用户提供网上信息浏览服务。

  2. HTTP:
    HTTP是超文本传输协议的缩写,是用于从WEB服务器传输超文本到本地浏览器的传输协议,也是互联网上应用最为广泛的一种网络协议。HTTP是一个客户端和服务器端请求和应答的标准,客户端是终端用户,服务端是网站,通过使用Web浏览器、网络爬虫或者其他工具,客户端发起一个到服务器上指定端口的HTTP请求。

  3. POP3/SMTP/IMAP:
    POP3(Post Offic Protocol 3)邮局协议的第三个版本,
    SMTP(Simple Mail Transfer Protocol)简单邮件传输协议,
    IMAP(Internet Mail Access Protocol)交互式邮件存取协议,
    通过上述名词的解释,我们可以了解到Nginx也可以作为电子邮件代理服务器。

  4. 反向代理

    正向代理
    在这里插入图片描述

    反向代理
    在这里插入图片描述

1.3、Nginx的优点

  1. 速度更快、并发更高
    单次请求或者高并发请求的环境下,Nginx都会比其他Web服务器响应的速度更快。一方面在正常情况下,单次请求会得到更快的响应,另一方面,在高峰期(如有数以万计的并发请求),Nginx比其他Web服务器更快的响应请求。Nginx之所以有这么高的并发处理能力和这么好的性能原因在于Nginx采用了多进程和I/O多路复用(epoll)的底层实现。
  2. 配置简单,扩展性强
    Nginx的设计极具扩展性,它本身就是由很多模块组成,这些模块的使用可以通过配置文件的配置来添加。这些模块有官方提供的也有第三方提供的模块,如果需要完全可以开发服务自己业务特性的定制模块。
  3. 高可靠性
    Nginx采用的是多进程模式运行,其中有一个master主进程和N多个worker进程,worker进程的数量我们可以手动设置,每个worker进程之间都是相互独立提供服务,并且master主进程可以在某一个worker进程出错时,快速去"拉起"新的worker进程提供服务。
  4. 热部署
    现在互联网项目都要求以7*24小时进行服务的提供,针对于这一要求,Nginx也提供了热部署功能,即可以在Nginx不停止的情况下,对Nginx进行文件升级、更新配置和更换日志文件等功能。
  5. 成本低、BSD许可证
    BSD是一个开源的许可证,世界上的开源许可证有很多,现在比较流行的有六种分别是GPL、BSD、MIT、Mozilla、Apache、LGPL。这六种的区别是什么,我们可以通过下面一张图来解释下:
    在这里插入图片描述
    Nginx本身是开源的,我们不仅可以免费的将Nginx应用在商业领域,而且还可以在项目中直接修改Nginx的源码来定制自己的特殊要求。这些点也都是Nginx为什么能吸引无数开发者继续为Nginx来贡献自己的智慧和青春。OpenRestry [Nginx+Lua] Tengine[淘宝]

1.4、Nginx的功能特性及常用功能

Nginx提供的基本功能服务从大体上归纳为"基本HTTP服务"、“高级HTTP服务”和"邮件服务"等三大类。

  1. 基本HTTP服务
    Nginx可以提供基本HTTP服务,可以作为HTTP代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL等。
    • 处理静态文件、处理索引文件以及支持自动索引;
    • 提供反向代理服务器,并可以使用缓存加上反向代理,同时完成负载均衡和容错;
    • 提供对FastCGI、memcached等服务的缓存机制,,同时完成负载均衡和容错;
    • 使用Nginx的模块化特性提供过滤器功能。Nginx基本过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSI以及图像缩放等。其中针对包含多个SSI的页面,经由FastCGI或反向代理,SSI过滤器可以并行处理。
    • 支持HTTP下的安全套接层安全协议SSL.
    • 支持基于加权和依赖的优先权的HTTP/2
  2. 高级HTTP服务
    • 支持基于名字和IP的虚拟主机设置
    • 支持HTTP/1.0中的KEEP-Alive模式和管线(PipeLined)模型连接
    • 自定义访问日志格式、带缓存的日志写操作以及快速日志轮转。
    • 提供3xx~5xx错误代码重定向功能
    • 支持重写(Rewrite)模块扩展
    • 支持重新加载配置以及在线升级时无需中断正在处理的请求
    • 支持网络监控
    • 支持FLV和MP4流媒体传输
  3. 邮件服务
    Nginx提供邮件代理服务也是其基本开发需求之一,主要包含以下特性:
  • 支持IMPA/POP3代理服务功能
  • 支持内部SMTP代理服务功能

1.5、Nginx常用的功能模块

  1. 静态资源部署
  2. Rewrite地址重写
    正则表达式
  3. 反向代理
  4. 负载均衡
    • 轮询、加权轮询、ip_hash、url_hash、fair
  5. Web缓存
  6. 环境部署
    • 高可用的环境
  7. 用户认证模块…

1.6、Nginx的核心组成

  • nginx二进制可执行文件
  • nginx.conf配置文件
  • error.log错误的日志记录
  • access.log访问日志记录

2、Nginx的安装

2.1、Nginx环境准备

  1. 虚拟机系统安装

    虚拟机环境安装准备
    1. VMware WorkStation
    2. Centos7
    3. MobaXterm
    4. 网络

    VMware中安装CentOS7请参考文档在VMware中安装CentOS7(超详细的图文教程)

  2. 确认centos的内核
    准备一个内核为2.6及以上版本的操作系统,因为linux2.6及以上内核才支持epoll,而Nginx需要解决高并发压力问题是需要用到epoll,所以我们需要有这样的版本要求。
    我们可以使用uname -a命令来查询linux的内核版本。

    [root@VM-16-14-centos ~]# uname -a
    Linux VM-16-14-centos 3.10.0-1160.88.1.el7.x86_64 #1 SMP Tue Mar 7 15:41:52 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
    
  3. 确保centos能联网

    [root@VM-16-14-centos ~]# ping www.baidu.com
    PING www.a.shifen.com (180.101.50.188) 56(84) bytes of data.
    64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=1 ttl=49 time=11.5 ms
    64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=2 ttl=49 time=11.5 ms
    64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=3 ttl=49 time=11.6 ms
    64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=4 ttl=49 time=11.6 ms
    

    在这里插入图片描述

  4. 确认关闭防火墙
    这一项的要求仅针对于那些对linux系统的防火墙设置规则不太清楚的,建议大家把防火墙都关闭掉,因为我们此次课程主要的内容是对Nginx的学习,把防火墙关闭掉,可以省掉后续Nginx学习过程中遇到的诸多问题。
    关闭的方式有如下两种:

    # 1、关闭运行的防火墙,系统重新启动后,防火墙将重新打开
    systemctl stop firewalld 
    # 2、永久关闭防火墙,,系统重新启动后,防火墙依然关闭
    systemctl disable firewalld 
    # 3、查看防火墙状态
    systemctl status firewalld 
    
  5. 确认停用selinux
    selinux(security-enhanced linux),美国安全局对于强制访问控制的实现,在linux2.6内核以后的版本中,selinux已经成功内核中的一部分。可以说selinux是linux史上最杰出的新安全子系统之一。虽然有了selinux,我们的系统会更安全,但是对于我们的学习Nginx的历程中,会多很多设置,所以这块建议大家将selinux进行关闭。
    sestatus查看状态

    [root@VM-16-14-centos ~]# sestatus
    SELinux status:                 disabled
    

    如果查看不是disabled状态,我们可以通过修改配置文件来进行设置,修改SELINUX=disabled,然后重启下系统即可生效。

    vim /etc/selinux/config
    

    在这里插入图片描述

2.2、Nginx的发行版本

常用版本分为四大阵营:

  • Nginx 开源版 | https://nginx.org/:赤裸裸的Web服务器、反向代理、负载均衡(功能少,开发难度大)

  • Nginx Plus 商业版 | https://www.nginx.com/:什么都有全家桶(付费版本)

  • OpenResty | https://openresty.org/cn/:是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。

  • Tengine | https://tengine.taobao.org/:淘宝二开的Nginx。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。

2.3、编译安装Nginx(开源版)

  1. 下载地址:nginx: download | https://nginx.org/en/download.html

  2. 配置编译安装环境
    在这里插入图片描述

    tar zxvf nginx-1.20.2.tar.gz
    
    [root@localhost ~]# cd nginx-1.20.2
    [root@localhost nginx-1.20.2]# ll
    总用量 788
    drwxr-xr-x 6 1001 1001    326 814 10:53 auto
    -rw-r--r-- 1 1001 1001 312251 1116 2021 CHANGES
    -rw-r--r-- 1 1001 1001 476577 1116 2021 CHANGES.ru
    drwxr-xr-x 2 1001 1001    168 814 10:53 conf
    -rwxr-xr-x 1 1001 1001   2590 1116 2021 configure
    drwxr-xr-x 4 1001 1001     72 814 10:53 contrib
    drwxr-xr-x 2 1001 1001     40 814 10:53 html
    -rw-r--r-- 1 1001 1001   1397 1116 2021 LICENSE
    drwxr-xr-x 2 1001 1001     21 814 10:53 man
    -rw-r--r-- 1 1001 1001     49 1116 2021 README
    drwxr-xr-x 9 1001 1001     91 814 10:53 src
    

    根据编译安装报错,可以判断需要什么环境依赖

    以下是关于编译安装的基础知识:

    configure文件:这个文件是一个Shell脚本,用于检测系统环境、配置编译选项以及生成相应的Makefile文件。

    Makefile文件是软件工程中的一种自动化构建工具文件,主要用于Unix-like操作系统(如Linux、BSD等)和一些集成开发环境(IDEs),用于管理和自动化编译、链接程序的过程。在Makefile中,开发者定义了一系列规则来指导make工具如何编译和链接源代码文件,以生成最终的目标文件(通常是可执行文件或库文件)。

    Makefile的核心功能包括:

    依赖关系:声明源代码文件之间的依赖关系,当某个源文件或其依赖的头文件发生变化时,仅重新编译受影响的部分而不是整个项目。
    规则:定义如何从源文件生成目标文件的规则,包括编译器选项、编译命令、链接命令等。
    自动化:通过比较文件的修改时间和目标文件的存在与否,make能自动判断哪些目标需要更新,并执行相应的命令。
    目标:可以定义多种目标,如编译调试版、发布版,或者执行测试、清理等任务。
    变量和函数:Makefile支持变量和函数,可以用来简化命令行参数和路径名的管理。
    模式规则:允许定义通用的转换规则,适用于多个源文件到目标文件的转换情况。
    在实际使用中,程序员通过编写Makefile来组织和控制整个项目的构建流程,只需简单地运行make命令,make工具就会读取Makefile文件,分析依赖关系,并执行必要的编译和链接步骤来生成最终的产品。

    第一次报错+排查(注意看代码注释)
    安装gcc

    [root@localhost nginx-1.20.2]# ./configure --prefix=/usr/local/nginx
    checking for OS
     + Linux 3.10.0-862.el7.x86_64 x86_64
    checking for C compiler ... not found   # 缺少C语言编译器
    
    ./configure: error: C compiler cc is not found
    
    # 配置Yum
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    yum install -y epel-release
    
    # gcc是c语言编译器的一种
    yum install -y gcc
    

    第二次报错+排查(注意看代码注释)
    安装perl库

    [root@localhost nginx-1.20.2]# ./configure --prefix=/usr/local/nginx
    ...
    ...
    checking for PCRE library in /usr/pkg/ ... not found
    checking for PCRE library in /opt/local/ ... not found
    
    ./configure: error: the HTTP rewrite module requires the PCRE library.  # 缺少pcpe库
    You can either disable the module by using --without-http_rewrite_module
    option, or install the PCRE library into the system, or build the PCRE library
    statically from the source with nginx by using --with-pcre=<path> option.
    
    # 安装 pcre
    yum install -y pcre pcre-devel
    

    第三次报错+排查(注意看代码注释)
    安装zlib库

    # 再次执行编译安装
    [root@localhost nginx-1.20.2]# ./configure --prefix=/usr/local/nginx
    checking for zlib library ... not found
    
    ./configure: error: the HTTP gzip module requires the zlib library. # 确实zlib库
    You can either disable the module by using --without-http_gzip_module
    option, or install the zlib library into the system, or build the zlib library
    statically from the source with nginx by using --with-zlib=<path> option.
    
    [root@localhost nginx-1.20.2]# yum install -y zlib zlib-devel
    
    
    # 再次执行,成功安装完成,并可以看到当前目录下生成了Makefile文件
    [root@localhost nginx-1.20.2]# ./configure --prefix=/usr/local/nginx
    creating objs/Makefile
    
    Configuration summary
      + using system PCRE library
      + OpenSSL library is not used
      + using system zlib library
    
      nginx path prefix: "/usr/local/nginx"
      nginx binary file: "/usr/local/nginx/sbin/nginx"
      nginx modules path: "/usr/local/nginx/modules"
      nginx configuration prefix: "/usr/local/nginx/conf"
      nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
      nginx pid file: "/usr/local/nginx/logs/nginx.pid"
      nginx error log file: "/usr/local/nginx/logs/error.log"
      nginx http access log file: "/usr/local/nginx/logs/access.log"
      nginx http client request body temporary files: "client_body_temp"
      nginx http proxy temporary files: "proxy_temp"
      nginx http fastcgi temporary files: "fastcgi_temp"
      nginx http uwsgi temporary files: "uwsgi_temp"
      nginx http scgi temporary files: "scgi_temp"
    
  3. 编译安装

    # make命令的功能是编译内核或源码文件。
    make 
    # 安装已经编译好的程序。复制文件树中到文件到指定的位置
    make install
    # 卸载已经编译好的程序。暂不执行
    make uninstall
    

    在这里插入图片描述

2.4、操作与配置

  1. 启动Nginx
    进入安装好的目录/usr/local/nginx/sbin

    ./nginx 启动
    ./nginx -s stop 快速停止
    ./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
    ./nginx -s reload 重新加载配置
    ./nginx -t 测试配置文件语法是否正确
    

    nginx -s reload 命令看似只是重新加载配置。其实是创建了新线程Work来替换的老的线程Work。

    [root@localhost sbin]# ./nginx
    [root@localhost sbin]# ps -aux| grep nginx
    root      12189  0.0  0.0  20572   616 ?        Ss   13:22   0:00 nginx: master process ./nginx
    nobody    12190  0.0  0.0  21016  1312 ?        S    13:22   0:00 nginx: worker process
    root      12192  0.0  0.0 112824   984 pts/0    S+   13:22   0:00 grep --color=auto nginx
    

    访问地址:http://192.168.119.128/

    在这里插入图片描述

浏览器如果访问不到,请关闭防火墙

  1. 关于防火墙
    防火墙内网可以不开。一般IP需要暴露在外网才开。如果需要防范内部人员也可开启。

    # 关闭防火墙
    systemct1 stop firewalld.service
    # 禁止防火墙开机启动
    systemct1 disable firewalld.service
    # 放行端口
    firewa11-cmd --zone=public --add-port=80/tcp --permanent
    # 重启防火墙
    firewa11-cmd --reload
    
  2. 安装成系统服务

    • 创建服务脚本
      	# 编辑Nginx系统服务文件
      	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
      PrivateTmp=true
      
      [Install]
      WantedBy=multi-user.target
      
    • 重新加载系统服务
      systemctl daemon-reload
      
    • 启动Nginx
      注意:使用systemctl命令启动Nginx前,请使用 ./nginx -s stop命令将原方式启动的Nginx关闭
      ./nginx -s stop
      
      systemctl start nginx
      
    • 设置开机启动
      systemctl enable nginx
      
    • 查看nginx状态
      systemctl status nginx
      

3、Nginx 基础使用

3.1、目录结构

进入Nginx的主目录我们可以看到这些文件夹

client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
  • 临时文件
    其中目录带有temp的字段是临时文件,是Nginx运行之后产生的,主要用来存放运行过程中的临时文件

    client_body_temp fastcgi_temp proxy_temp scgi_temp
    

    带有temp目录的项在Nginx的目录结构中主要用于存储临时文件,这些目录与Nginx处理不同类型的请求时产生的临时数据相关。每个temp目录对应于Nginx处理特定类型请求时的临时存储需求,具体说明如下:

    1. client_body_temp: 存储客户端请求体的临时文件。当客户端发送POST请求,且请求体较大时,Nginx会先将请求体写入到这个目录下的临时文件中,然后再由Nginx处理或转发给后端服务器。
    2. fastcgi_temp: 用于FastCGI请求的临时文件存储。当Nginx作为前端服务器,与后端FastCGI应用服务器(如PHP-FPM)交互时,可能会需要存储一些临时数据,比如上传的文件或者大请求体。
    3. proxy_temp: 服务于HTTP代理和反向代理请求的临时文件。当Nginx作为代理服务器转发请求到后端,并且需要暂存请求或响应的内容时,会用到这个目录。
    4. scgi_tempuwsgi_temp: 分别用于SCGI(Simple Common Gateway Interface)和uWSGI(Universal Web Server Gateway Interface)协议相关的临时文件存储。这两种协议类似于FastCGI,用于与不同的后端应用程序服务器通信。
      这些临时文件夹的存在,使得Nginx能够高效处理各种类型的请求,尤其是在处理大数据量传输时,避免了直接在内存中存储大量数据,从而降低了系统内存的压力。需要注意的是,这些目录通常由Nginx服务运行的用户(如上面显示的nobody)拥有权限,以确保安全性和隔离性。在生产环境中,定期清理这些临时文件是非常重要的维护操作,以避免磁盘空间被无用的临时文件耗尽。
  • conf
    用来存放配置文件相关

    [root@localhost nginx]# ll conf/
    总用量 68
    -rw-r--r-- 1 root root 1077 814 11:10 fastcgi.conf
    -rw-r--r-- 1 root root 1077 814 11:10 fastcgi.conf.default
    -rw-r--r-- 1 root root 1007 814 11:10 fastcgi_params
    -rw-r--r-- 1 root root 1007 814 11:10 fastcgi_params.default
    -rw-r--r-- 1 root root 2837 814 11:10 koi-utf
    -rw-r--r-- 1 root root 2223 814 11:10 koi-win
    -rw-r--r-- 1 root root 5231 814 11:10 mime.types
    -rw-r--r-- 1 root root 5231 814 11:10 mime.types.default
    -rw-r--r-- 1 root root 2656 814 11:10 nginx.conf # 主要配置文件,该文件可以引用其它配置文件
    -rw-r--r-- 1 root root 2656 814 11:10 nginx.conf.default
    -rw-r--r-- 1 root root  636 814 11:10 scgi_params
    -rw-r--r-- 1 root root  636 814 11:10 scgi_params.default
    -rw-r--r-- 1 root root  664 814 11:10 uwsgi_params
    -rw-r--r-- 1 root root  664 814 11:10 uwsgi_params.default
    -rw-r--r-- 1 root root 3610 814 11:10 win-utf
    
  • html
    用来存放静态文件的默认目录 html、css等

    [root@localhost nginx]# ll html/
    总用量 8
    -rw-r--r-- 1 root root 494 814 11:10 50x.html      # Nginx访问出现错误时的提示页面
    -rw-r--r-- 1 root root 612 814 11:10 index.html    # Nginx默认访问的文件
    
  • log
    用来日志文件

    [root@localhost nginx]# ll logs/
    总用量 12
    -rw-r--r-- 1 root root 417 814 11:17 access.log   # Nginx用户访问日志文件,所以访问都将记录在该文件中
    -rw-r--r-- 1 root root 324 814 11:19 error.log    # Nginx访问报错时记录日志文件
    -rw-r--r-- 1 root root   5 814 11:19 nginx.pid    # 记录Nginx的主进程的Pid的文件
    

    验证nginx.pid文件是否保存的主进程Pid
    可以看到nginx.pid文件内容,和nginx: master主进程ID一致。该文件为更具nginx: master主进程PID变化

    [root@localhost nginx]# cat logs/nginx.pid
    12189
    [root@localhost nginx]# ps -aux | grep nginx
    root      12189  0.0  0.0  20572   616 ?        Ss   13:22   0:00 nginx: master process ./nginx
    nobody    12190  0.0  0.0  21016  1312 ?        S    13:22   0:00 nginx: worker process
    root      12207  0.0  0.0 112824   988 pts/0    S+   13:24   0:00 grep --color=auto nginx
    
  • sbin
    nginx的主程序

    [root@localhost nginx]# ll sbin/
    总用量 3796
    -rwxr-xr-x 1 root root 3883616 814 11:10 nginx    # Nginx程序启动文件
    

3.2、基本运行原理

在这里插入图片描述

主进程(Master Process)与工作进程(Worker Processes):

  • Master Process:Nginx 启动时,首先会生成一个主进程。主进程主要负责管理子进程、加载和验证配置文件、维护工作进程池,以及响应信号(如重新加载配置、优雅关闭等)。主进程不直接参与处理客户端请求。
  • Worker Processes:主进程会根据配置文件中指定的数量创建多个工作进程。每个工作进程都能够独立处理客户端的请求,包括接收请求、处理请求、返回响应等。工作进程数量通常与服务器的CPU核心数相匹配,以充分利用硬件资源。

重新加载配置(reload操作):nginx.conf配置文件更改了,Master会将Worker进程Kill掉,Kill之前会留有一段时间让当前的Worker进程处理完手上的请求,不再接收新的请求了。Kill掉之后创建一个新的Worker进程,配置文件读取的也是最新的。

[root@localhost nginx]# ps -aux | grep nginx
root      12189  0.0  0.0  20572   616 ?        Ss   13:22   0:00 nginx: master process ./nginx
nobody    12190  0.0  0.0  21016  1312 ?        S    13:22   0:00 nginx: worker process
root      12207  0.0  0.0 112824   988 pts/0    S+   13:24   0:00 grep --color=auto nginx

4、Nginx配置与应用场景

4.1、最小配置

4.1.1、初始配置文件(示例)

[root@localhost conf]# cat nginx.conf

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
   
    worker_connections  1024;
}


http {
   
    include       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"';

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值