Nginx 反向代理的核心是通过 server 块匹配域名,利用 proxy_pass 转发请求。可以批量配置,推荐通过独立文件管理或正则映射实现高效维护 。
3 C# \6 g; G/ A) m' m4 `/ k
% O ~0 q- B Z1 A基础单域名反向代理配置
: l: |1 X" a0 F9 z在 /etc/nginx/conf.d/ 下新建 .conf 文件(如 proxy.conf),每个域名对应一个 server 块:
9 C8 j! M! t! v/ L5 z' O: p9 h$ u) r: r7 T+ p: ]" ^" x% o
nginx( }$ p) q9 f( a8 s" g0 L
server {% e' Z9 c v6 t% Z: G/ o$ y, }8 h3 ?
listen 80;& X K# B1 x! ~0 k! _. t4 h
server_name example.com; # 绑定域名
; b1 u% t$ c8 u. y- Y# O; ^
* ?/ c3 i. z: H6 [6 V location / {* t1 u, b) h- u
proxy_pass http://127.0.0.1:8080; # 转发至后端地址
, f3 r; @) K6 k1 ]" d/ q( n proxy_set_header Host $host; # 传递原始域名/ v+ T: I! M8 f1 S* i
proxy_set_header X-Real-IP $remote_addr;
& c) J, g+ U) ^# n: s, a2 n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;2 W, E; L# h* }9 l3 W8 e
}& l/ e4 O" A5 e" V
}
& E) T) n, I$ q( J# A" t2 \配置完成后执行 nginx -t 测试语法,无误后运行 nginx -s reload 生效 。
! r7 \3 f% L7 d8 P& u% E* A% {
' |/ _3 M. U# H0 ]; r, G批量配置方案% m/ ]# `* |$ Z
若需管理大量域名,避免重复代码,可采用以下两种批量方式:! \% n$ v4 S @$ M/ f7 `8 J) j
! S& ^/ H4 y4 g1 X1 i
多文件分块管理(推荐)
4 Z+ @0 T& g, _* Y! d1 C! \* F: s+ Z
在 /etc/nginx/conf.d/ 目录下为每个域名或每组相似域名创建独立 .conf 文件。; q+ J) \& A: T. k# t2 w5 Y/ ~
Nginx 会自动加载该目录下的所有配置文件,便于隔离维护和版本控制 。. C8 Z, E/ {' ]. o- j. r
示例:site_a.conf, site_b.conf 分别定义不同的 server_name 和 proxy_pass 。6 D: x3 V% O$ w$ |2 F; \" |
正则通配符批量匹配
4 m0 u& ?/ X1 X2 B9 F, ?8 o8 Q) J0 l# F& n! i, K$ N3 q8 q5 Z5 \
适用于二级域名规则统一(如 *.test.com 指向不同端口)的场景。 P l6 j& B2 J0 R+ G: d1 m
使用 map 指令动态映射域名到后端地址,减少 server 块数量 。
6 \! E. C' H0 _6 I# s示例逻辑:. Q' g% \$ E) Q$ I
nginx
- L* f3 g" T* smap $host $backend_uri {% L6 y/ ~$ T- G- K5 Z
~^blog\. http://127.0.0.1:8081;
6 M, `2 j/ C) Q: w( @ ~^shop\. http://127.0.0.1:8082;- J/ k* p W! W, m, H+ e
default http://127.0.0.1:8080;
0 c3 O" c, H# I+ d" y6 B}
9 U# q' m9 j# u8 u9 b, b% userver {
' n2 W. X" ]" P2 x- c0 T" N listen 80;
; a7 V9 ~2 }/ k2 g. ?& @ server_name _._; # 捕获所有未单独匹配的域名
4 b# v. S" f- n- q: d1 v location / {
$ t' f9 V8 w0 _+ j& c: v, t; ? proxy_pass $backend_uri;/ e) U7 ]0 f0 K6 c4 X
}
e1 N- F" D( r' D7 R q}
! H A/ j# o8 T注意:复杂批量逻辑建议结合脚本生成配置文件,再重载 Nginx 。
" O* o. j9 d% J+ [0 h% T$ v关键注意事项8 n# I" T' [9 k& b' O0 }: U
DNS 解析:确保域名已解析到 Nginx 服务器公网 IP。% R7 P! V( W7 N, R& d$ o: S
Header 传递:务必设置 Host、X-Real-IP 等头信息,否则后端无法获取真实客户端信息 。& Z5 }4 _4 ^8 ^$ A
HTTPS 支持:若需加密,监听 443 端口并配置 ssl_certificate,或配置 80 端口 301 跳转至 HTTPS 。
, I {) l7 U% S( r5 u6 N需要我帮你整理一个域名批量配置的自动化脚本模板吗?可以一键生成Nginx配置文件,节省手动编写时间。
6 E2 d, O' Q0 c |+ N6 V6 Y' o; F* K1 Y
参考 |