Nginx 反向代理的核心是通过 server 块匹配域名,利用 proxy_pass 转发请求。可以批量配置,推荐通过独立文件管理或正则映射实现高效维护 。
! B; f- g4 \# x9 L! A; Z6 @; q( R U' L: r! G) l: m
基础单域名反向代理配置% _# T# a$ }: a5 F- r8 p+ S
在 /etc/nginx/conf.d/ 下新建 .conf 文件(如 proxy.conf),每个域名对应一个 server 块:' q: l$ J1 d4 K* ?8 \# H
% |3 F. F2 _$ n ^7 [
nginx
/ ^+ U* F' _- e' N7 [server {5 b1 M) {5 u9 O* E4 q
listen 80;! h) C4 s& Q, w" F0 H
server_name example.com; # 绑定域名3 Y; c2 F$ z5 M( b, @4 ]0 h7 T
J7 K3 U, N, g, c location / {
4 K4 M! N4 U7 J! F proxy_pass http://127.0.0.1:8080; # 转发至后端地址
% \3 m2 s' g: Q# Y- C proxy_set_header Host $host; # 传递原始域名5 `, \5 R2 f* f; U3 l2 V) {) B
proxy_set_header X-Real-IP $remote_addr;
$ B4 ?* N6 D, x" q1 p. D7 \ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
, I3 T# A; k' G* z3 M }% g( f7 z% G' f
}
2 s& n+ }1 s3 W4 ?/ j配置完成后执行 nginx -t 测试语法,无误后运行 nginx -s reload 生效 。* j/ U" B7 Q) _ E5 a" O
# d' L' K7 j8 ^' b批量配置方案
5 @! ~' |- \$ H若需管理大量域名,避免重复代码,可采用以下两种批量方式:
. h1 G0 }2 _( F7 @ d
& i5 @) T& a- r; g) p) w多文件分块管理(推荐)
J" `' x5 E) \ A
- ]7 d/ h) ^# r# T7 Z1 M在 /etc/nginx/conf.d/ 目录下为每个域名或每组相似域名创建独立 .conf 文件。6 I, J! P7 B8 w$ z( Z$ M% \7 Z
Nginx 会自动加载该目录下的所有配置文件,便于隔离维护和版本控制 。
% s' F. E8 X3 A% f示例:site_a.conf, site_b.conf 分别定义不同的 server_name 和 proxy_pass 。. P% ^" A+ r! \1 z% |
正则通配符批量匹配3 k" E) V4 ?! I# u/ ]; _& N
( v7 A- Q3 ^3 V# r/ h( k! Y! p适用于二级域名规则统一(如 *.test.com 指向不同端口)的场景。
s4 e L6 T1 C8 ?' g1 J! U& t使用 map 指令动态映射域名到后端地址,减少 server 块数量 。
; h$ y2 d w8 p2 `6 h5 x4 R示例逻辑:/ @- n8 D! V- {( p( m
nginx1 [0 a6 g1 _) N) N9 Q% g7 d/ w' v& t
map $host $backend_uri {' C) d4 O; e: ?9 E5 _) R
~^blog\. http://127.0.0.1:8081;
" O) _* x- h) y8 r! ~6 X1 H5 P ~^shop\. http://127.0.0.1:8082;
4 {$ P; O0 c' m# M7 w default http://127.0.0.1:8080;: g/ ]( h4 ^0 q0 m. t
}
+ f/ x" N9 \( B+ l, L8 lserver {$ `6 @. m& Z- h1 Y H1 ?, l X
listen 80;6 C4 A% k! X l4 V
server_name _._; # 捕获所有未单独匹配的域名
7 d2 f4 F6 K. P9 A4 [# M location / {6 C' Q( d8 ^. a7 n- z4 d; E
proxy_pass $backend_uri;7 I- ~3 h$ w2 S) H6 M
}
3 l' K+ X8 b9 i}
0 o; ?( e+ X! c& Q注意:复杂批量逻辑建议结合脚本生成配置文件,再重载 Nginx 。1 r9 x [. N: X! \) R0 l
关键注意事项2 l; K1 \, ?7 ^ [
DNS 解析:确保域名已解析到 Nginx 服务器公网 IP。6 H5 H$ \" o/ v W
Header 传递:务必设置 Host、X-Real-IP 等头信息,否则后端无法获取真实客户端信息 。
1 T# M2 t; _2 ^6 l! T& uHTTPS 支持:若需加密,监听 443 端口并配置 ssl_certificate,或配置 80 端口 301 跳转至 HTTPS 。
( ^' {0 _( S" }0 p; y( q需要我帮你整理一个域名批量配置的自动化脚本模板吗?可以一键生成Nginx配置文件,节省手动编写时间。
5 R/ F4 D! ~! [
1 \1 G, @ d7 q, a4 u+ ]6 t参考 |