Nginx配置详解 - niancan/doc GitHub Wiki
Nginx conf详解
- main(全局配置)
- events(nginx工作模式)
- http(http设置)
- sever(主机设置)
- location(url匹配)
- upstream(负载均衡配置)
user nobody nobody; 指定Nginx Worker进程运行用户以及用户组,默认由nobody帐号运行
worker_processes 2; 指定Nginx要开启的子进程数,每个Nginx进程平均消耗10-12MB内存,一般与CPU核数相同即可
error_log /usr/local/var/log/nginx/error.log notice; 定义全局错误日志文件
pid /usr/local/var/run/nginx/nginx.pid 存储Nginx进程pid
worker_rlimit_nofile 1024; 指定一个Nginx进程可以打开最多的文件描述符数目
events{
use epoll; #Nginx的工作模式,Nginx支持的工作模式有select poll kqueue epoll rtsig和dev/poll
#其中select和poll 都是标准的工作模式,kqueue和epoll是高效的工作模式,
#不同的是epoll用在Linux平台上,kqueue用在BSD系统中,对于Linux系统,opoll工作模式是首选
work_connections 1024; #用于定义Ninx每个进程的最大连接数,即接收前端的最大请求数,默认是1024,
#最大客户端连接数由worker_process和worker_connection决定,
#即Max_clients=worker_process*worker_connections,在作为反向代理时,
#Max_clents变为:Max_clients=worker_process*worker_connections/4,
#进程最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令" ulimit -n 65536"
#后"worker_connections"的设置才能生效
}
http{ #核心模块
include mime.types; #支持的文件类型
default_type application.octet-stream; #默认的二进制流
log_format main '$remote_add - $remote_user [$time_local] "$request"' #日志格式
'$status $body_bytes_sent "http_referer"'
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /usr/local/var/log/nginx/access.log main; #日志路径
sendfile on; #用于开启高效文件传输模式,
#将tcp_nopush和tcp_nodelay2个指定设置为on用于防止网络阻塞
tcp_nopush on;
tcp_nodelay on;
#gzip on;
keppalive_time 10 #设置客户端连接保持活动的超时时间,超过这个时间之后,服务器会关闭该连接
server{ #http的子模块,
listen 8080; #监听的端口
sever_name localhost 192.168.12.10 www.baidu.com #用来指定IP地址或者域名
root /Users/baidu/wwww; #程序的路径
index index.php index.html index.htm; #定义入口文件
charset utf-8; #编码
access_log usr/local/var/log/host.access.log main #访问日志路径
access_log usr/local/var/log/host.error.log error; #错误日志路径
location{
...
}
}
server{
...
location /{ #localtion / 表示匹配访问根目录
root /User/baidu/www; #web主目录
index index.php index.html index.htm; #入口文件
}
#反向代理配置
location /itcast/{
proxy_pass http://127.0.0.1:12345
proxy_set_header X-real-ip $remote_add;
proxy_set)header Host $http_host;
}
#采用uwsgi方式
location /python/{
include uswgi_params;
uwsgi_pass 127.0.0.1:333;
}
#访问本机目录
location /{
root /home/itcatst/xwp/itcast/;
index index.html index.htm;
}
}
#负载均衡
upstream myproject{
ip_hash; #负载均衡调度算法Nginx支持4种算法
weight轮询(默认) #weight值越大,分配到的机率越高
ip_hash #根据ip的hash结构分配,不能配置weight和backup
fair #比上面2个更智能,根据响应时间短的优先分配,
#nginx本身不支持fair,必须下载upstream_fair模块
url_hash #根据url的hash结果来分配,需下载hash包
server 192.168.123.1:80;
server 192.168.123.1:80 down; #downg表示当前server不参与负载均衡
back 预留的备份机器
server 192.168.123.1:80 max_fails=3 fail_timeout=20s;
max_fails #允许请求失败的次数,默认为1
fail_timeout #超时时间
server 192.168.123.1:8080;
}
...
}
Nginx反代和负载
upstream name{...}
upstrean mynet{
server www.baidu.com;
server www.baidu1.com;
server www.baidu2.com;
}
server{
location /{
proxy_pass http://mynet;
}
}