1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
- worker_provesses ${cpu.core.num}
- error_log ${error.log.path}
- pid ${pid.path}
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
events {
use epoll
worker_connections 1024; #单个后台进程的最大并发数
}
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。
worker_processes 1;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
send_timeout 4;
upstream server1 {
server 127.0.0.1:8000;
}
#max_fails表示失败三次后就会暂且搁置该节点的服务,fail_timeout秒后结束
#max_conns表示最大连接数 backup表示备份服务,当所有的服务挂了后才会启动该服务
upstream server2 {
server 127.0.0.1:8001 weight=1 max_fails=3 fail_timeout=15;
server 127.0.0.1:8002 weight=2 max_conns=1000;
server 127.0.0.1:8003 backup;
}
#监听未匹配上任何Host的80端口接收的请求
server {
listen 80;
#表示终止本次请求,终止后客户端将收不到响应
#如果不终止,将会返回404
return 444;
}
#监听访问80端口并且Host为www.baidu.com的请求
server {
listen 80;
server_name www.baidu.com;
#将所有请求代理到proxy_pass指定的服务列表,包括前端
location / {
root html;
index index.html index.htm;
proxy_pass http://server1;
}
}
#监听访问80端口并且Host为server_name的请求
server {
listen 80;
server_name 127.0.0.1 localhost haydn.top;
#将前端请求交由html目录下的资源处理
#首页为index.html或index.htm
location / {
root html;
index index.html index.htm;
}
#将以/api为前缀的请求交由proxy_pass指定的服务列表处理
location /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://server2;
#开启代理内部异常
proxy_intercept_errors on;
}
error_page 400 402 404 /40x.html;
error_page 500 502 503 504 /50x.html;
}
}