运维|devops|nginx|基本配置拆解
最小单元
http { # 第1层:HTTP 全局配置
server { # 第2层:虚拟主机(站点)
listen 80;
server_name example.com;
location / { # 第3层:URL 路由
root /var/www; # 第4层: 静态页面地址
}
}
}

http模块
所有HTTP相关配置的最外层容器
一个nginx.conf只能有一个http块可定义多个server
server模块
定义一个虚拟主机(站点),通过listen和server_name区分不同的域名或端口
listen:监听的 IP 和端口(如 80、443 ssl)
server_name:匹配的域名(支持通配符和正则)
root / index:静态文件根目录和默认首页
ssl_certificate / ssl_certificate_key:SSL 证书路径
location模块
根据请求 URI 进行路由匹配,执行相应处理(如提供静态文件、转发到后端、重定向等)
- 匹配规则
=:精确匹配,优先级最高
^~:前缀匹配,若匹配则不再检查正则
~(区分大小写)或 ~*(不区分)正则匹配
- 常见处理
root / alias:指定文件路径
proxy_pass:转发请求到后端服务器
try_files:尝试多个文件/路径
简单配置
server {
listen 80;
server_name static.example.com;
root /var/www/html; # 所有 location 默认的根目录
index index.html; # 默认首页文件
location /images/ {
root /data; # 实际路径为 /data/images/
}
location /css/ {
alias /app/static/css/; # alias 替换路径,实际为 /app/static/css/
}
}
反向代理
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://backend_server; # 转发到 upstream 或直接写 IP
proxy_set_header Host $host; # 传递原始 Host 头
proxy_set_header X-Real-IP $remote_addr;
}
}
