Nginx 配置不是一堆散乱指令,它是分层的。
worker_processes auto;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
upstream api_backend {
server 127.0.0.1:3001;
server 127.0.0.1:3002;
}
server {
listen 80;
server_name example.com;
location / {
root /srv/www/site;
}
location /api/ {
proxy_pass http://api_backend;
}
}
}把它翻译成“城市总闸口”语言:
main -> 总闸口总控制室
events -> 并发接待规则
http -> HTTP 城区总规划
upstream -> 后方多个业务区的编组名单
server -> 某个域名/端口对应的一道正式闸门
location -> 这道闸门里面更细的分流车道概念关系图如下:
nginx.conf
├── main
│ ├── worker_processes
│ └── error_log
├── events
│ └── worker_connections
└── http
├── log_format / access_log
├── proxy_cache_path
├── upstream
└── server
├── listen
├── server_name
└── location
├── root / alias
├── try_files
├── proxy_pass
├── return / rewrite
└── access_log / add_header初学时你只要先记住一句话:
server 决定“进哪道闸门”,location 决定“走哪条车道”。