1. 程式人生 > >Nginx之基本介紹(一)

Nginx之基本介紹(一)

動靜分離 quit 共享內存 oct bytes err 配置文件 默認頁 日誌格式

這是一篇介紹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-worker方式配置同時啟動多個線程 ,但是master進程不會對用戶的請求提供服務,只用於管理worker進程,而 worker進程才會真正處理用戶的請求。

  worker簡稱基本介紹:

    • worker進程的數量和服務器的cpu核心數相等
    • worker進程之間通過共享內存和原子操作等一些進程間的通信機制來實現 負載均衡
    • 多個worker同時提供服務不但能夠提高服務的健壯性,而且可以充分利用smp多核框架實現多核並發處理

Nginx的nginx.config文件介紹

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

########### 每個指令必須有分號結束。#################
#user administrator administrators;    #配置用戶或者組,默認為nobody nobody。
#worker_processes 2;    #允許生成的進程數,默認為1
#pid /nginx/pid/nginx.pid;    #指定nginx進程運行文件存放地址


error_log logs/error.log debug;    #制定日誌路徑,級別。這個設置可以放入全局塊,http塊,server塊,級別以此為:debug|info|notice|warn|error|crit|alert|emerg


events {
  accept_mutex on;    #設置網路連接序列化,防止驚群現象發生,默認為on
  multi_accept on;    #設置一個進程是否同時接受多個網絡連接,默認為off
  #use epoll;   #事件驅動模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
  worker_connections 1024;    #最大連接數,默認為512
}


http {
  include mime.types; #文件擴展名與文件類型映射表
  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之基本介紹(一)