Nginx介紹
特性:
模塊化設計,較好的擴展性
高可靠性
支持熱部署:不停機更新配置文件,升級版本,更換日志文件
低內存消耗: 10000個keep-alive連接模式下的非活動連接,僅
需要2.5M內存
event-driven,aio,mmap, sendfile基本功能:
靜態資源的web服務器(圖片, js, css, html, txt等靜態資源)
http協議反向代理服務器(結合FastCGI/uWSGI/SCGI等協議)
pop3/imap4協議反向代理服務器
模塊化(非DSO),如zip, SSL模塊
Nginx架構
- nginx的程序架構: master/worker結構
- 一個master進程:
負載加載和分析配置文件、管理worker進程、平滑升級 - 一個或多個worker進程
處理并響應用戶請求 - 緩存相關的進程:
cache loader:載入緩存對象
cache manager:管理緩存對象
- 一個master進程:
編譯安裝
yum groupinstall "Development Tools" "Server Platform Development"
yum install pcre-devel openssl-devel zlib-devel
#安裝工具包
useradd -r nginx
#添加用戶
./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_stub_status_module --with-threads --with-file-aio
#生成configure文件
make && make install
#安裝
Nginx配置
- 主配置文件/etc/nginx/nginx.conf
- 子配置文件/etc/nginx/conf.d/*.conf
- 支持的mime類型/etc/nginx/mime.types
- 配置格式:
指令 值 [值2];
1、指令必須以分號結尾
2、支持使用配置變量
內建變量:由Nginx模塊引入,可直接引用
自定義變量:由用戶使用set命令定義
set variable_name value;
引用變量: $variable_name
- 配置文件結構
main block 主配置段,也即全局配置段,對http,mail都有效
event { <==事件驅動相關的配置
...
}
http { <==http/https 協議相關配置段
...
}
mail { <==mail 協議相關配置段
...
}
stream { <==stream 服務器相關配置段
...
}
全局配置段
user www www;
#進程用戶
worker_processes 2;
#worker進程數
error_log /var/log/nginx-error.log info;
#錯誤日志文件
pid /var/run/nginx.pid;
#pid文件路徑
events {
use kqueue;
worker_connections 2048;
#每個worker進程最大連接數
}
ngx_http_core_module
http {
...
... 各server的公共配置
server { 每個server用于定義一個虛擬主機
...
}
server {
...
server_name 虛擬主機名
root 主目錄
alias 路徑別名
location [OPERATOR] URL { 指定URL的特性
...
if CONDITION {
...
}
}
}