Nginx之基本介紹(一)
這是一篇介紹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 -s stop 註意.pid文件一定是默認的,如果.pid文件不是默認路徑就需要在-s前加上-g"pid /var/nginx/test.pid"
- 測試配置文件
- /usr/local/nginx/sbin/nginx -t
- 使用-v顯示Nginx的版本信息
- 使用-V展示的版本信息更多
- 重啟 /usr/local/nginx/sbin/nginx -s reload
- 日誌文件回滾
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之基本介紹(一)