这是一篇介绍Nginx基本信息和配置文件详情的文章,适合入门者,如果你想深入了解Nginx请绕道

什么是Nginx?

  Nginx是轻量级,高性能,跨平台的web服务器

Nginx的特点

  • 更快

    • 单个请求的响应速度更快
    • 在高并发时,Nginx比其他的web服务器具有更快的响应速度  
  • 高扩展性

  Nginx是由不同具有低耦合模块组成的,这使得他具备支持大量第三方模块的特点

  • 高可靠性(健壮性)

  依赖于其和新框架代码的优秀设计和模块设计的简单性;当一个worker进程出错时,master管理进程会快速的拉起新的worker子进程提供服务

  • 低内存消耗

  体现在10000个非活跃的http keep-alive的连接在Nginx中紧消耗2.5M

  • 单机支持十万以上并发

  Nginx支持的并发连接上限取决于内存,但是十万原未封顶;能够及时的处理更多的并发请求时业务特点紧密相关的

  实现原理:

  • 热部署

  master管理进程和worker工作进程的分离设计,使得Nginx能够支持热部署,也就是说在不间断的服务的前提下,升级Nginx的可执行文件,更新配置项和更换日志文件

  • 支持bsd协议

  也就是不只是支持免费试用nginx还允许用户在自己的项目中直接使用和修改源码

linux服务器中nginx命令

  • 启动   /usr/local/nginx/sbin/nginx     如果nginx.config不是在默认路径下,请参考:/usr/local/nginx/sbin/nginx  -c /tmp/nginx.conf
  • 停止   
    • /usr/local/nginx/sbin/nginx -s stop    注意.pid文件一定是默认的,如果.pid文件不是默认路径就需要在-s前加上-g"pid /var/nginx/test.pid"
    • /usr/local/nginx/sbin/nginx -s quit   这种方式会等到Nginx正常处理完所有的请求后在停止服务
  • 测试配置文件  
    • /usr/local/nginx/sbin/nginx -t
    • 使用-v显示Nginx的版本信息
    • 使用-V展示的版本信息更多
  • 重启  /usr/local/nginx/sbin/nginx -s reload
  • 日志文件回滚  /usr/local/nginx/sbin/nginx -s reopen

Nginx进程之间的关系

  Nginx支持单进程(master进程)。使用master-worker方式配置同时启动多个线程 ,但是master进程不会对用户的请求提供服务,只用于管理worker进程,而 worker进程才会真正处理用户的请求。

  worker简称基本介绍:

    • worker进程的数量和服务器的cpu核心数相等 ,如果worker进程数大于CPU核数,就会加大进程间切换带来的消耗,因为Linux是抢占式内核
    • worker是单线程的进程
    • worker进程之间通过共享内存和原子操作等一些进程间的通信机制来实现 负载均衡
    • 多个worker同时提供服务不但能够提高服务的健壮性,而且可以充分利用smp多核框架实现多核并发处理

什么方式反向代理方式

  用代理服务器来接收Internet上的连接请求,然后将请求转发给内部网络中的上游服务器,并将从上有服务器上得到的结果返回给Internet上请求链接的客户端,此时代理服务器带外的表现就是一个web服务器

Nginx用作代理服务器的优缺点

  过程:当客户端发来Http请求时,Nginx并不会立刻转发到上游服务器,而是先把用户的请求(包括Http包体)完整的接收到Nginx所在的服务器的硬盘或者内存中,然后在向上游服务器发起链接,把缓存的客户端请求转发到上游服务器。

  优点:这样就节省上游服务器的被占用的时间,特别是当请求内容比较大时效果就非常明显,大大降低了上游服务器的负载,尽量把压力放在了Nginx服务器上。

  缺点:延长了一个请求的处理时间,并增加了用于缓存请求内容内存和磁盘空间。

Nginx的nginx.config文件介绍

以下是nginx.config文件的基本内容:

########### 每个指令必须有分号结束。#################
#user administrator administrators;    #配置用户或者组,默认为nobody nobody。

#worker_processes 2;    #  worker进程个数,默认是1    最好配置成和内核数量一致的worker进程数,这样在处理请求时效率最高

#worker_cpu_affinity   1000     0100    0010   0001;  #    讲worker进程和CPU内核绑定

#pid /nginx/pid/nginx.pid;    #指定nginx的master进程ID的pid文件存放路径

error_log logs/error.log debug;    #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug | info | notice | warn | error | crit | alert | emerg      关闭日志的唯一方式:/dev/null

#debug_connection    10.224.66.14:14    #   仅仅来自这个IP的地址的请求才会输出debug级别的日志,其他的请求仍然沿用error_log中配置的日志级别  注意:使用这个参数的前提是在执行configure时已经加入了--with-debug参数    

events {
  accept_mutex on;    #   这是nginx的负载均衡锁,设置网路连接序列化,防止惊群现象发生,默认为on

  #lock_file      logs/nginx.lock     # accept锁可能需要这个lock文件,如果accept锁关闭这个文件就完全不生效,如果打开并且由于编译程序,操作系统架构等因素导致Nginx不支持原子锁,这时才会用文件锁实现accept锁
  multi_accept on;    #建立新连接     当事件模型通知有新连接是,尽可能的对本次调度中客户端发起的所有TCP请求都建立连接,默认为off
  #use epoll;   #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
  worker_connections 1024;    #每个worker进程可以同时处理的最大连接数,默认为512

  

}

http {
  include mime.types; #文件扩展名与文件类型映射表    include可以用于嵌入其他的配置文件  ,其后面的路径可以是绝对路径,也可以是相对路径(相对于nginx.config的相对路径)
  default_type application/octet-stream;   #默认文件类型,默认为text/plain
  #access_log off;   #取消服务日志
  log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';   #日志记录   自定义格式
  access_log logs/access.log myFormat;    #combined为日志格式的默认值
  sendfile on;    #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
  sendfile_max_chunk 100k;    #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
  keepalive_timeout 65;    #连接超时时间,默认为75s,可以在http,server,location块。

upstream web-test {
  server 127.0.0.1:8080;
  # server 192.168.10.121:3333 backup;       #热备
}

error_page 404 https://www.baidu.com;      #错误页

server {
  keepalive_requests 120;   #单连接请求上限次数。
  listen 80;    #监听端口
  server_name web.test.com;   #监听地址
  location ~*^.+$ {   #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
    #root /;   #根目录
    #index vv.txt;    #设置默认页
    proxy_pass http://web-test;   #请求转向mysvr 定义的服务器列表
    #deny 127.0.0.1;    #拒绝的ip
    #allow 172.18.5.54;   #允许的ip
  }
}

#访问本地文件
server {
  listen 80;
  server_name babaike.kuangxiang.com;
  default_type 'text/html';
  autoindex on;
  charset utf-8;
  index index.html index.htm;
  location / {
    root D:/babaike;
    rewrite ^(.*)\.(.*)!(.*)$ $1_$3.$2 break;
  }
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root D:/dev/git/static/uxuexi/error;
  }
}

#动静分离时使用
server {
  listen 80;
  server_name static.uxuexi.com;
  charset utf-8;
  index index.html;
  location / {
    root D:/dev/git/static/uxuexi;
    rewrite ^(.*)\.(.*)!(.*)$ $1_$3.$2 break;
  }
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root D:/dev/git/static/uxuexi/error;
  }
}

}

Nginx之基本介绍(一)的更多相关文章

  1. Nginx负载均衡介绍

    Nginx真心牛逼 nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态.静态页面的分离,可以按照轮询.ip哈希.URL哈希.权重等多种方式 ...

  2. 3.Nginx常用功能介绍

    Nginx常用功能介绍 Nginx反向代理应用实例 反向代理(Reverse Proxy)方式是指通过代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并且从内部网络服 ...

  3. 《基于Nginx的中间件架构》学习笔记---4.nginx编译参数详细介绍

    通过nginx -V查看编译时参数: 在nginx安装目录下,通过./configure --help,查看对应版本ngnix编译时支持的所有参数: Nginx编译参数详细介绍: --help 显示本 ...

  4. nginx 集群介绍

    nginx 集群介绍 完成一次请求的步骤 1)用户发起请求 2)服务器接受请求 3)服务器处理请求(压力最大) 4)服务器响应请求 缺点:单点故障 单台服务器资源有限 单台服务器处理耗时长 ·1)部署 ...

  5. Nginx基础知识介绍

    Nginx基础知识介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx概述 Nginx是免费的.开源的.高性能的HTTP和正向/反向代理服务器.邮件代理服务器.以及T ...

  6. Nginx服务配置文件介绍

    LNMP架构应用实战——Nginx服务配置文件介绍 nginx的配置文件比较简单,但功能相当强大,可以自由灵活的进行相关配置,因此,还是了解下其配置文件的一此信息 1.Nginx服务目录结构介绍 安装 ...

  7. nginx的负载介绍

    指定上游服务器的upstream与server指令 指令介绍 Syntax: upstream name { ... } Default: — Context: http Syntax: server ...

  8. Nginx 基本配置介绍

    一.什么是Nginx Nginx 是一个免费的,开源的,高性能的HTTP服务器和反向代理,以及IMAP / POP3代理服务器. Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻 ...

  9. Nginx 开发者文档翻译 - 介绍

    由于我的一个Private Cloud FaaS(函数计算)项目 Navagraha 使用nginx作为实现Service Mesh和API Gateway的基础框架,需要对Nginx有深入的了解,因 ...

随机推荐

  1. 【emWin】例程二十一:窗口对象——Edit

    简介: 编辑框通常用作输入文本的主要用户界面,也可使用编辑字段以二进制.十进制或十六进制模式输入值. 触摸校准(上电可选择是否进入校准界面) 实验指导书及代码包下载: 链接:http://pan.ba ...

  2. OpenGL教程一

    引自:https://blog.csdn.net/u013654125/article/details/73613644 GLEW, GLFW和GLM介绍 现在你有了工程,就让我们开始介绍下工程所用到 ...

  3. Java动态代理与反射详解

    首先我得先请大家不要误会,博客园说转载的文章放在文章分类里,原创的文章用随笔写,我开先还以为随笔是拿来写抒情文的(滑稽),后来才发现不是这样的,但是自己所有的文章都在文章分类里了,又懒得搬运,所以我就 ...

  4. Entity Framework定义外键,限制通过migration命令自动更改字段名称

    1.问题 在定义一个表的外键时,通过add-migration命令生成,并通过update-database更新到数据库,发现外键名称发生了重命名.举例说明: 人员表[User](Id,Name,Pa ...

  5. 3D 特征点概述(1)

    很久没有更新相关内容了,很多朋友过来私信我,但由于时间问题,不能一一为大家解答,本人也不是无所不知的大神,还请各位谅解. 本文主要总结PCL中3D特征点的相关内容,该部分内容在PCL库中都是已经集成的 ...

  6. Python3数字(Number)

    一.数学函数 二.随机数函数 三.三角函数 四.数学常量

  7. EasyRadius 动态域名DDNS设置工具,支持WayOS三代,完美解决近段时间3322和每步不稳定问题

    以下软件只适合拥有公网IP的用户哦,要是您没有公网IP,只能和我们联系,获取VPN了 EasyRadius从1.65开始就提供DDNS,中途由于我们升级了安全性,导致DDNS更新失败 这段时间由于33 ...

  8. Java并发之volatile二

    使用volatilekeyword的场景 Volatile 变量具有 synchronized 的可见性特性.可是不具备原子特性.这就是说线程可以自己主动发现 volatile 变量的最新值.Vola ...

  9. 路由查询命令tracert

    from:https://jingyan.baidu.com/article/9c69d48f4df25713c8024e66.html 在命令行中输入“tracert ”并在后面加入一个IP地址,可 ...

  10. java面试(2)--大数据相关

    第一部分.十道海量数据处理面试题 1.海量日志数据,提取出某日访问百度次数最多的那个IP. 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中.注意到IP是32位的,最多有个2^ ...