nginx配置主要模块:
main(全局模块)、events(事件模块)、upstream(负载均衡配置)、server(主机配置)、location(URL映射配置)
它们的关系图:
一:nginx整体配置文件讲解
#指定admin&root用户才可以操作nginx
user admin admin;
#指定处理请求的进程数,一般设置为CPU核数
worker_processes 1;
#指定错误日志存放路径
error_log /usr/local/soft/nginx/logs/error.log
#指定pid进程文件存放路径
pid /usr/local/soft/nginx/nginx.pid;
#events模块
events {
#指定Nginx的工作模式。
use epoll;
#每一个worker进程能并发处理(发起)的最大连接数
worker_connections 1024;
}
#http模块
http {
#实现对配置文件所包含的文件的设定
include mime.types;
#默认文件类型
default_type application/octet-stream;
#定义日志模板
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#用了log_format指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径;
access_log logs/access.log main;
#开启高效传输模式
sendfile on;
#开启 tcp_nopush on; 和tcp_nodelay on; 防止网络阻塞。
tcp_nopush on;
tcp_nodelay on
#长连接超时时间
keepalive_timeout 65;
#FastCGI相关参数:为了改善网站性能:减少资源占用,提高访问速度
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#开启gzip压缩输出
gzip on;
#最小压缩文件大小
gzip_min_length 1k;
#压缩缓冲区
gzip_buffers 4 16k;
#用于设置识别HTTP协议版本,默认是1.1
gzip_http_version 1.1;
# 压缩等级,1压缩比最小,处理速度最快,9压缩比最大,传输速度快,但是消耗CPU资源。
gzip_comp_level 6;
#压缩类型
gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
#开启ssi支持,默认是off
ssi on;
ssi_silent_errors on;
#定义实现负载均衡的服务器组
upstream balance {
server 127.0.0.1:8080;
server 127.0.0.1:8090;
}
#server 虚拟主机配置
server {
listen 80;
server_name localhost; #服务名称
#对 / 所有做负载均衡+反向代理
location / {
#将请求代理到 8080/8090端口的tomcat服务器上的ssm项目
proxy_pass http://balance/ssm/;
#当后端Web服务器上配置多个虚拟主机时,用该Header来区分反向代理哪个主机名
proxy_set_header Host $host;
}
#静态文件,nginx自己处理,不去balance请求后端的服务
location ~ .*\.(gif|jpg|jpeg|png|ico|js|css)$ {
#静态文件存放目录
root /usr/local/soft/nginx/images;
#设置缓存时间:一天
expires 1d;
}
#定义50X错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
#nginx目录下的html/50x.html
root html;
}
#支持https请求
server {
listen 443 ssl;
server_name localhost;
ssl_certificate cert.pem;
ssl_certificate_key cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
}
二:events模块 use epoll 解读
events {
use epoll; # use是个事件模块指令,用来指定Nginx的工作模式
worker_connections 1024;
}
nginx支持的工作模式:select、poll、kqueue、epoll、rtsig、/dev/poll
|-- select和poll都是标准的工作模式,
|-- kqueue和epoll是高效的工作模式,
epoll用于linux平台、支持 linux2.6+,而kqueue用于BSD系统
若操作系统支持高效工作模式,则首选该模式。所以对于linux系统,选用epoll模式
三:upstream 参数解读
upstream balance {
server 127.0.0.1:8070 weight=8 max_fails=2 fail_timeout=30s;
server 127.0.0.1:8080 weight=3 max_fails=2 fail_timeout=30s;
server 127.0.0.1:8090 backup;
server 127.0.0.1:8091 down;
}
down 表示负载过重或者不参与负载
backup
例:如果max_fails是2,它就检测2次,如果2次都是502.那么,他就会根据fail_timeout 的值,等待30秒,再去检测。
上一节:nginx 简介&安装
下一节:nginx 负载均衡策略
参考文章:死磕nginx之配置文件
参考文章:nginx配置文件详解