Nginx 基本入门1

  • 什么是Nginx
    Nginx是一个高性能的http服务器和反向代理服务器。Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 。它支持内核 Poll 模型,能经受高负载的考验。

  • Nginx的架构
    Nginx 在启动后以daemon 的方式在后台运行,采用master + worker 的方式工作。master 的任务是接收外界的信号,管理worker结点;worker的作用是处理http请求。

  • nginx处理一个请求的流程
    todo

nginx对于使用者来说,最重要的是熟悉它的配置文件。下面是一个nginx的一个标准配置文件nginx.conf, 我的想法是把配置文件里面的每一行的作用分析一下,这样可以了解nginx 的基本功能。然后,配置一个nginx静态服务器,作为练手。

image.png
  • 配置文件中每一行代码功能的分析

    # line1 :
    worker_processes 8 
    

    第一行,worker_porcesses 8,表示的是nginx启动之后,会创建8个worker结点来干活。

    nginx 的架构是master-worker 的结构,master进程来管理多个worker进程。

    1. master的作用只是来管理worker进程,启动服务,停止服务,重启加载配置文件。
    2. worker结点的作用是用来干活的,是来处理http请求的。(刚刚开始看的时候,理解错误了,worker结点是用来处理http请求的,但是并不是每遇到一个http的请求就创建一个worker来处理。worker只会创建有限的个数)
    3. 对于worker的个数,官方给出的建议是等于cpu核心的个数。nginx的想法并不是通过创建无限多的进程,来提高处理并发请求的能力。ngxin是尽可能的以异步的方式去处理请求。对于worker进程,它的想法是尽可能的减少进程切换的开销,所以进程数等于cpu核心数是最好的状态。(这个又看到一个风骚的操作,就是worker进程去绑定特定的cpu核心,切换环境的开销还可以再高效一点)
    #line2~line3
    error_log  logs/error.log;
    pid        logs/nginx.pid;
    

    第二行到第三行,这个就是指定错误日志的输出位置和进程的pid,这两个文件都存在与logs的文件夹下面。

    #line4~line7:
    events {
        worker_connections  1024;
    }
    

    这里遇到了第一个块配置项events,worker_connnects 1024 ;表示的nginx 的默认的并发数目。
    那么,一个nginx的最大连接数 = worker_processes * worker_connections
    PS :

  • 这里不是很确定,不知道worker_processes * worker_connections
    计算出来的是最大连接数,还是最大并发数? 让我再想想

  • 这个worker_connnects 1024 是配置文件给的,实际在我的电脑上能不能做到,我接下来用apache ab 压力测试一下。结果以后补充

#line 8 ~line14
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    ...
    ...

include 表示嵌入将其他的配置文件嵌入到当前的配置文件里面。

关于mime.types ,我的理解是:
HTTP request里面有一个头叫 Accept,列出浏览器可以接受的mime type,HTTP response 的Content-Type 的值 在Accept 里面。我的理解是Nginx 会根据请求的文件的扩展名来决定返回什么 Content-Type。

如果Web程序没设置,Nginx也没找到对应文件的扩展名的话,就使用默认的Type,这个在Nginx 里用 default_type定义,比如 default_type application/octet-stream; 。

关于sendfile on
这是nginx 的文件操作的优化配置之一,这个是启用linux上的sendfile系统调用来发送文件,这样就减少了内核态和用户态的切换,减少了两次内存的复制。文件从磁盘里面读取之后直接在内核态里面写入网卡设备,提高了发送文件的效率。

关于nginx文件操作的优化,还有aio,directio,还有文件缓存机制open_file_cache_max等

keepalive_timeout 65;
http请求里面的keepalive 功能是为了让多个请求复用一个http长连接,这个功能可以提高服务器的性能。 keepalive_timeout 表示了一个长连接闲置超过65秒的时候,服务器就会关闭这个链接。

gzip on;
表示启用压缩

#line 17 ~31
server {
    listen       80;
    server_name  localhost;
    location / {
        root   html;
        index  index.html index.htm;
    }
    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

每一个server块表示的是一个虚拟主机
listen 80 表示的是在监听的端口是80,server_name 表示的是虚拟主机的名字

line19 ~ line22
location /test {
      root  html;   #这个root也可以不写,因为默认的root就是html
}

假设nginx 的服务器的路径是:


image.png

location的作用是,会尝试根据用户的请求中的URI来匹配上面的/URI的表达式,如果可以匹配,就选择location的规则来处理用户的请求。所以,location的作用就是,选择location里面的配置来处理用户的请求。

对于这样的一个location ,对于请求是 127.0.0.1/test/my.html , nginx收到这个请求之后,处理的流程是:

  1. location 找到test
  2. 在root的路径对应的html文件夹下面找到test 文件里里面的my.html文件
  • ATTENTION: 注意必须在html的文件夹下面 创建一个名字叫test的文件夹,里面放一个my.html的文件。
    如果我有一个静态文件 myindex.html mycss.css 我想搭建一个静态的站点,那直接放到nginx的html文件夹里面就可以了。

小结

小结一下,nginx配置文件的结构图,应该是如下:

untitled.png

这篇文章写的是nginx配置文件的分析,这一篇文章写的是关于nginx的基本使用和一些常用的配置。
https://www.jianshu.com/p/b2817017ddaf

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

推荐阅读更多精彩内容