nginx(一)

前言

  • 未来会围绕nginx系列写几篇文章。包含自己理解的,用到的,学到的,希望和大家一起互相激励,发现、解决问题,共同进步。

目录

  • nginx简介
  • nginx特点和应用场景
  • nginx配置结构

nginx简介

\color{red}{nginx} (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。
国内分支Tengine


nginx特点和应用场景

特点

  • 内存消耗低
    在一般的情况下,10000个非活跃的HTTP Keep-Alive 连接在Nginx中仅消耗2.5M的内存,这也是Nginx支持高并发连接的基础。
  • 高并发
    官方测试nginx能够支撑5万并发连接,实际生产环境中可以支撑2~4万并发连接数。主要是因为nginx使用了最新的epoll(Linux2.6内核)kqueue(freeBSD)网路I/O模型。
  • 热部署
    nginx采用master管理进程与worker工作进程的分离设计,使得nginx具有热部署的功能,那么在7×24小时不间断服务的前提下,升级nginx的可执行文件。也可以在不停止服务的情况下修改配置文件,更换日志文件等功能。
  • 其他
    配置文件简单,稳定性高,成本低廉,节省带宽(gzip压缩),开源社区活跃等等。

应用场景

  • 反向代理
    反向代理应该是Nginx做的最多的一件事了,反向代理方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。简单来说就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器,而代理服务器能被外部网络访问的同时又跟真实服务器在同一个网络环境,当然也可能是同一台服务器,端口不同而已。
    反向代理
  • 负载均衡
    当有2台或以上服务器时,可以根据规则随机的将请求分发到指定的服务器上处理,负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。 而 Nginx 目前支持自带3种负载均衡策略,还有2种常用的第三方策略。
  1. RR(默认方式)
    每个请求按时间顺序被分配到不同的后端服务器,如果后端服务器挂掉,能自动过滤。
  2. 权重(自带)
    可以指定后端服务被访问到的几率。
  3. ip_hash(自带)
    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。
  4. fair(第三方)
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。
  5. url_hash(第三方)
    按访问url的hash结果来分配请求,使url定向到同一个后端服务器。
  • HTTP服务器
    nginx也是一个静态资源的服务器,当只有静态资源的时候,就可以使用 Nginx 来做服务器。当然动静分离,也可以通过 nginx 来实现。

nginx配置结构

  • 总体结构预览(后面会在详细介绍)
##
# 全局配置
##
user nobody;             ## 配置 worker 进程的用户和组
worker_processes auto;     ## 配置 worker 进程启动的数量,建议配置为 CPU 核心数
error_log logs/error.log;  ## 全局错误日志
pid /run/nginx.pid;        ## 设置记录主进程 ID 的文件
worker_rlimit_nofile 8192; ## 配置一个工作进程能够接受并发连接的最大数
##
# 工作模式及连接数上限
##
events {
   # epoll 是多路复用 IO(I/O Multiplexing)中的一种方式,
   # 仅用于 Linux 2.6 以上内核,可以大大提高 Nginx 性能
   use epoll
   worker_connections 4096;  ## Defaule: 1024,单个后台 worker process 进程的最大并发链接数
   # 并发总数 max_clients = worker_professes * worker_connections
   # multi_accept on;  ## 指明 worker 进程立刻接受新的连接
}
##
# http 模块
##
http {
   ##
   # Basic Settings
   ##
   sendfile on;
   tcp_nopush on;
   tcp_nodelay on;
   keepalive_timeout 65;      ## 连接超时时间
   types_hash_max_size 2048;  ## 指定散列类型表的最大大小
   # server_tokens off;
   # server_names_hash_bucket_size 64;  # this seems to be required for some vhosts
   # server_name_in_redirect off;
   include /etc/nginx/mime.types;  ## 设定 mine 类型
   default_type application/octet-stream;
   # 设定请求缓冲
   client_header_buffer_size    128k; # 指定客户端请求头缓存大小,当请求头大于 1KB 时会用到该项
   large_client_header_buffers  4 128k; # 最大数量和最大客户端请求头的大小
   ##
   # SSL Settings
   ##
   # 启用所有协议,禁用已废弃的不安全的SSL 2 和SSL 3
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
   # 让服务器选择要使用的算法套件
   ssl_prefer_server_ciphers on;

   ##
   # Logging Settings
   ##
   access_log /var/log/nginx/access.log;  ## 访问日志
   error_log /var/log/nginx/error.log;    ## 错误日志

   ##
   # Gzip Settings
   ##
   gzip on;
   gzip_disable "msie6";

}
  • nginx config配置详解(后面会在详细介绍)
    从上面nginx的总体结预览中可以看出nginx config的总体配置大致
    分为5个部分
  1. 全局配置(user、worker_processes、error_log、pid)
    user nobody
    定义运行nginx服务的用户。如 user nobody nobody
    worker_processes
    定义nginx子进程数量(提供服务的进程数量),建议和服务cpu核数保持一致。除了可以定义数字外,还可以定义为auto,表示让系统自动调整。如:worker_processes 2 或 worker_processes auto
    error_log
    定义错误日志的路径,可以是相对路径(相对prefix路径的),也可以是绝对路径。也可以定义到http、server、location里,
    如:error_log logs/error.log;

    error_log 日志级别
    定义错误日志级别,常见的错误日志级别有(低到高顺序):
    \color{blue}{debug|info|notice|warn|error|crit|alert|emerg}
    级别越高记录的信息越少。如果不定义默认是error
    如:error_log logs/error.log notice

    nginx pid 路径
    定义nginx进程pid文件所在路径,可以是相对路径,也可以是绝对路径。如:pid logs/nginx.pid
    worker_rlimit_nofile
    定义nginx最多打开文件数限制。如果没设置的话,这个值为操作系统(ulimit -n)的限制保持一致。把这个值设高,nginx就不会有“too many open files”问题。如:worker_rlimit_nofile 100000
  2. events(网络连接相关,worker_connections)
    worker_connections 1024
    定义每个work_process同时开启的最大连接数,即允许最多只能有这么多连接
    accept_mutex on
    当某一个时刻只有一个网络连接请求服务器时,服务器上有多个睡眠的进程会被同时叫醒,这样会损耗一定的服务器性能。Nginx中的accept_mutex设置为on,将会对多个Nginx进程(worker processer)接收连接时进行序列化,防止多个进程争抢资源。默认就是on
    multi_accept on
    nginx worker processer可以做到同时接收多个新到达的网络连接,前提是把该参数设置为on。默认为off,即每个worker process一次只能接收一个新到达的网络连接。
    use epoll
    Nginx服务器提供了多个事件驱动器模型来处理网络消息。
    其支持的类型有:select、poll、kqueue、epoll、rtsing、/dev/poll以及eventport。
  • select:只能在Windows下使用,这个事件模型不建议在高负载的系统使用
  • poll:Nginx默认首选,但不是在所有系统下都可用
  • kqueue:这种方式在FreeBSD 4.1+, OpenBSD2.9+, NetBSD 2.0, 和 MacOS X系统中是最高效的
  • epoll: 这种方式是在Linux 2.6+内核中最高效的方式
  • rtsig:实时信号,可用在Linux 2.2.19的内核中,但不适用在高流量的系统中
  • /dev/poll: Solaris 7 11/99+,HP/UX 11.22+, IRIX 6.5.15+, and Tru64 UNIX 5.1A+操作系统最高效的方式
  • eventport: Solaris 10最高效的方式
  1. http(最重要的部分,大部分功能都放这里)
    下一章 nginx(二)中继续介绍
  2. server(虚拟主机相关)
    下一章 nginx(二)中继续介绍
  3. location(server里面)
    下一章 nginx(二)中继续介绍

https://www.cnblogs.com/yudis/articles/6676636.html
https://blog.csdn.net/propro1314/article/details/46924687

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容