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; }

相關文章
相關標籤/搜索