nginx 笔记

IO模型  php

  阻塞html

  非阻塞node

  IO复用(select,poll)  linux

  信号驱动的IO (前半段异步  epoll,kqueue,/dev/poll)  nginx

  AIOc++

nginx特性:支持epoll , 文件的aio,内存映射 mmapweb

  master/worker 模型    master加载分享配置文件,启动worker.支持平滑升级   worker响应用户请求正则表达式

nginx安装能够采用编译安装  如今地址参考官网  http://nginx.org/en/download.html算法

必要的编译环境  yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel浏览器

进入下载的安装包的解压文件

[root@pomme nginx-1.10.3]# ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --user=nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid        \\能够根据   --help查看需求

 

--prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_gzip_static_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --without-http_uwsgi_module --without-http_scgi_module 

 

--with-http_stub_status_module (监控模块)

[root@pomme nginx-1.10.3]# echo $?
0  

安装   make && make install

配置文件在   --conf-path路径下   

主要组成:

  主配置文件nginx.conf

  include conf.d/*.conf     扩展的独立的配置加载文件位置 

\\ 

  http {
    include mime.types;  \\

  /etc/nginx/conf.d/*.conf

  fastcgi的配置文件  fastcgi.conf  uwsgi_params

  配置指令:(必须分号结尾)

  Directive value1 [value2...];

 

  支持使用变量

  内置变量   由模块引入:

  自定义变量

    set  variable value;

  引用变量  $variable

配置文件组织结构

  main block  \\全局模块  根目录

  event  {                                            \\events模块中包含nginx中全部处理链接的设置

      worker_connections  1024;            \\单个worker进程的最大并发链接数

  ....  \\独立与http和mail的   独立模块

      use epoll;                        \\设置用于复用客户端线程的轮询方法

  }

  http {

  和http访问的必须在内

  }  

 

  http 配置段:

  http{

    ....

    upstream{   \\负载均衡模块

    }

    server{   \\虚拟主机模块

      ....

      server_name  \\虚拟主机主机名  

      root      \\根文档路径

      alias      \\路径别名

      location   /usr/  {

      } \\指明多个特定的  url 访问映射何处  能够多个

    }

    server{

      ...

    }

  }

 

 

main  配置段

   类别

   一. 正常运行必备的配置;

   二. 优化性能相关的配置;

   三. 用于调试以及定位问题的配置;

一   1. user  #user  nobody;  指定用于运行work进程的用户和用户组

         2. pid   #pid        logs/nginx.pid;  指定进程的pid路径

    3. worker_rlimit_nofile #; 指定一个worker进程可以打开的最大文件描述符数 

    4. worker_rlimit_sigpending # 指定每一个用户所能发往worker进程的最大信号数

二   1.worker_processes #;  worker进程的个数一般为物理cpu个数 ~ n-2

    能够定义为 auto 实现自动设定  =cpu个数

       2.worker_cpu_affinity CPUMASK ...;  指明CPU掩码绑定

       CPUMASK:   0001      0010    0100  1000

    worker_cpu attinity 0000001 00000010 00000100;

       3.worker_priority nice;  [-20,19]    设置优先级

    查看ps  axo  comm,nice  默认是0

三  1.daemon [off|on] 是否以守护进程方式启动nginx 

   2.master_process  on|off ;  是否以master/worker模型运行nginx;

      3.error_log  /PATH/ERROR_LOG level;   错误日志文件及其级别 ;用于调试设置debug;但debug仅在编译时候使用了“--with-debug”才有效

 

event经常使用配置   参考官方wiki文档

1.worker_connections #;  每一个worker进程所能响应的最大数量       worker_process * worker_connections

2.use [epoll|rgsig|select|poll];  定义使用的事件模型  默认自动选择 

3.accept_mutex[on|off];  个worker接收用户请求的负载均衡锁的内部机制;启用时 表示让多个worker轮流的序列化的响应请求

4.lock_file   锁文件

经常使用配置以下

 

http配置段

socket或主机相关的指令

1.server {}  定义 server虚拟主机

   server{

    listen PORT;

    server_name NAME;

    root  /PATH/...;

  }

    注意:  (1)基于port;  listen指令监听不一样的端口;

         (2)基于hostname  server_name 指令指向不一样的主机名

2.listen

   listen address[:port] [default_server] [ssl] [http2 | spdy

   listen port [default_server] [ssl] [http2 | spdy

    default_server: 设置默认虚拟主机;用于基于ip地址,或使用了任意不能对应任意一个server的name是返回站点;

      默认第一个  或者   

        server {
            listen 80 default;

    ssl;用于限制只能经过SSL连接提供服务;既HTTPS

    spdy:SPDY protocl (speedy),在编译时用了spdy模块的状况下,用于支持spdy协议

    http2: http version 2

3.server_name NAME[....]; 后可跟一个或多个主机名,名称还可使用通配符和正则表达式;

  (1)先检查精确匹配 www.aa.com

  (2)左侧通配符  *.aa.com

  (3)右侧通配符  www.aa.*

  (4)正则表达式   -^.*\aa\.com$

  (5)default_server

4.tcp_nodelay on|off;  控制tcp的报文控制    默认off   对keepalive模式下的链接是否使用TCP_NODELAY选项

5.tcp_nopush on|off;  是否启用TCP_NOPUSH(FREEBSE)或TCP_CORK(linux);仅在sendfile为on时有用

6.sendfile on|off ;是否启用sendfile功能 ; 直接在内核空间封装文件

和路径相关的

7.root   指明根文档路径   设置web资源的路径映射; 能够在location 和server中 用于指明请求的URL所对应的URL对应的文档

8.location     功能:容许根据用户请求的url匹配定义的location,即为专用配置的url提供特定配置

location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }

=:URL的精确匹配;

~:作正则表达式匹配,区分字符大小写;

-*:作正则表达式匹配,不区分大小写;

^-:URL的左边部分匹配,不区分大小写;

匹配优先级:精确匹配= > ^->~或-* > 不带符号的URL  默认;

9.alise  

只能用于location配置段,定义别名

location /images/{

  root /data/imgs/;

}

location /images/{

  alias /data/imgs/;

}

root指令 :路径为对应的location的‘/’这个URL;

  images/1.jpg ---->/data/imgs/images/1.jpg

alias指令:路径为对应的location的'/url'这个URL;

  images/1.jpg ---->/data/imgs/1.jpg

10.error_page cod ...[=[response]] url;  根据http的状态吗重定向错误页面

  error_page 404  =200  /404.html     以指定的状态码响应

11.try_files file ... url;

   try_files file ...=code;    尝试查找第一个至N-1个文件,第一个即为返回给请求者的资源;若1 至 N-1都不存在,必须不能匹配至当前location 必须由其余location定义的跳转 不然死循环!!!

 

客户端请求相关的配置:

12.keepalive_timeout  timout    [header_timeout];  设定keepalive连接的超时时常,默认 75秒  0表示禁止;

13.keepalive_requests  number;  在keepalive链接上所容许请求的最大资源数量 默认100;

14.keepalive_disable none |browser...  禁止为某种浏览器使用keepalive功能

15.send_timeout #;  发送响应报文的超时时间,默认为60S

16.client_body_buffer_size    size ;   服务端接收客户端请求报文body的缓冲区大小 默认16K;超出此指定大小时。将移存到磁盘上

     client_body_temp_path path [level1[level2|[level3]]]    设定用于存储客户端请求body的临时存储路径及数量 level1表示1级   $2 2级别

   client_body_temp_path /var/tmp/client_body  2 2;  一级目录2个字符表示 二级也用2个字符表示。    256个1级子目录   256*256个2级

对客户端请求的限制

17. limit_excpet  METHOD {...} 对指定范围以外的其余方法进行访问控制;

  

 

18.limit_rate speed  限制客户端每分钟锁传输的字节数  默认为0

 

文件操做优化的相关配置

19  aio  on|off;  是否启用异步io模式

20 directio on|off; 是否启用直接io操做 

21 open_file_cache ;对打开的文件执行缓存

     open_file_cache off;

   open_file_cache  max=N [inactive=time]; 能够缓存三种信息

(1)文件的描述符、文件的大小和最近一次的修改时间;

(2)打开的目录结构;

(3)没有找到的或者没有权限的操做的文件的相关信息

max=N 表示可缓存的最大条目上限; 一旦达到上限,则会使用LRU算法从缓存中删除最近最少使用的缓存项

inactive=time ; 在此处指定的时常内没有被访问过的缓存项为活动缓存项,所以直接删除

22.open_file_cache_errors on |off;  是否缓存找不到路径的文件,或没有权限没有权限访问的文件先关信息

23.open_file_cache_valid time; 每一个多久检查一次缓存中的缓存项的有效期  默认60S

24.open_file_cache_min_uses number;  缓存项在非活动期限内最少应该被访问的次数;

 

ngx_http_access_module 模块的配置     基于IP

 ngx_http_auth_basic_module 模块的配置   basic认证

  

 ngx_http_log_module模块的配置   日志访问

访问日志文件路径,格式名称以及缓存大小和刷写时间间隔;建议定义缓冲提高性能,可能会致使崩溃性日志丢失

ngx_http_stub_status_module模块配置

ngx_http_referer_module模块配置(基于请求报文中的referer首部的值作访问控制  防盗链)

 

 

nginx 读取php 须要插件支持 

php-cgi

location ~ .*\.php$
{
fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; include fcgi-host.conf; fastcgi_param DOCUMENT_ROOT /home/wwwroot/xym/web ; fastcgi_param SCRIPT_FILENAME /home/wwwroot/xym/web$fastcgi_script_name; }

相关文章
相关标签/搜索