您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13214|回复: 0
打印 上一主题 下一主题

[centos] 用Nginx做端口转发(反向代理)

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发* y3 U) Y& I" [: r* y; }4 [$ A
+ t9 k  W5 N4 N/ ^, E! m5 }6 |: ~
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则! v3 m7 T5 y8 G4 p& M: A$ \* T" m% @' ?6 A
( Y$ n7 X& V! o  }
将域名转发到本地端口; u9 a) \% ~& u/ k3 v, F3 d
首先介绍最常用的,将域名转发到本地另一个端口上' h' `% E1 k* S; Z) M' j. o
  1. server{
    0 M4 V) R6 r7 z. }% m  y8 @
  2.   listen 80;3 D8 i; F/ L3 ]! _
  3.   server_name  tomcat.cncml.com;  `/ z9 _/ |( k) H# S3 S
  4.   index  index.php index.html index.htm;
    6 r8 i0 H+ O. E; T9 g

  5. 2 b& Q  G2 D$ \. m& S9 x$ A: Z
  6.   location / {2 ^) z( f: Z, N) }* m
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则2 X1 o6 s4 p  j3 a0 P' _3 j) U& C
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    0 H) t( [' ^' d+ Q
  9.     proxy_set_header X-Real-IP $remote_addr;# t3 \9 P5 {. ], m
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    2 q0 }6 A* ~3 E( r
  11.   }5 m- x- b) S. h7 k' P3 k$ F  z9 B4 U
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口- C" B' ~) T- f4 u# A

- n( Z( Y( W) c, v1 s+ ~将域名转发到另一个域名
8 h  k" r$ }# K7 R7 P8 ~
  1. server{
    : d5 w: E( H1 d* b% \. S
  2.   listen 80;
    , M8 U& ^0 H+ s$ d
  3.   server_name  baidu.cncml.com;
    ' i3 m- ^. w* N( N% ~/ X
  4.   index  index.php index.html index.htm;+ \1 Y; B! |8 H4 `5 A

  5. % ?: h- @- e1 S& m/ u# \; V1 L
  6.   location / {; b$ Q5 U2 D. |% L' f# j$ U# ?
  7.     proxy_pass  http://www.baidu.com;
    - L# x# |+ W% R$ A
  8.     proxy_set_header Host $proxy_host;
    1 n5 |$ V6 v& Y0 U3 ^5 N3 n2 f  r
  9.     proxy_set_header X-Real-IP $remote_addr;' C1 m: {2 H0 C( _' T
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    / S  J. J; C- u) k2 \' Y6 W
  11.   }' y1 X8 ~0 y6 x0 T' a4 v1 \9 W5 H: E
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名/ J0 H& Q# Y$ U6 `
  1. server{/ o& W& \! O8 s  R$ G
  2.   listen 80;1 o7 r" I6 N$ Z- P5 m# n
  3.   server_name 127.0.0.1; # 公网ip. _( I" T7 F* P! D. ^+ W
  4.   index  index.php index.html index.htm;$ D# q( ^1 [8 Z$ Y# d' Y

  5. 0 }6 F5 s$ P+ f9 K6 U% Q
  6.   location / {
    5 O6 G; X8 k0 t4 V
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com  `6 i+ M% L9 W6 a
  8.     proxy_set_header Host $proxy_host;
    " E- w) N( _/ N4 c" ^  q. t
  9.     proxy_set_header X-Real-IP $remote_addr;5 d# Z- E/ c# Z" f' r
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;2 q  R  d3 D3 l/ g- i
  11.   }2 Q0 _( G: U/ l& i  o
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com- V* {3 t. j( @: W" a0 J2 Y% g
6 i. q% d7 z7 l8 |
加 / 与不加 /
& ^, i. ~8 a& Q3 F2 l2 l在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
4 |$ j0 c- I4 U& n
) R" B1 L3 ]& h例如
8 @1 f0 J4 O( M3 |7 O8 @4 }+ u! R. I) N% O: B
加 /6 x0 L0 ]" @8 d; w% O" b, h
  1. server_name cncml.com
    $ d( b( ]/ y; D% `3 v5 r6 n
  2. location /data/ {3 ]# C  G: c- N( \
  3. proxy_pass http://127.0.0.1/;
    , P) h' X( V# T5 `) Q$ h
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
+ h, q, d0 F) z+ Q' y4 v/ |
; ~( C  W8 N6 K3 ~7 I不加 /- d& w! }& f5 P% _* ]% F9 T
  1. server_name cncml.com
    9 n1 ]" P6 e. e3 {) R
  2. location /data/ {. X! }" A# {* ^- o6 q% k% H2 j' h
  3. proxy_pass http://127.0.0.1;2 i7 a3 E; _  f6 Y& Y' V' s
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
: n7 e  ], F+ Q( x& d! a& M
$ v# {2 F: i) R  Z9 k: {
游客,如果您要查看本帖隐藏内容请回复
( M3 p2 S! T! x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 20:50 , Processed in 0.074767 second(s), 20 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!