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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
, }% ~& [- L" p6 r1 N* q7 h$ [, O1 q. Y; f+ x' ~8 _" T
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
; u0 L+ K* X3 i2 t; D" M) R6 |
8 L" S( t$ y6 @9 o$ W9 T" N! f: p# f将域名转发到本地端口9 Q( E+ C! D* y' Y' b
首先介绍最常用的,将域名转发到本地另一个端口上
' _2 R/ k, m9 m: O$ K
  1. server{/ Q( s" L# ]% n
  2.   listen 80;
    3 @4 @% z2 _9 f  `
  3.   server_name  tomcat.cncml.com;
    $ H% K5 v& h% U0 X
  4.   index  index.php index.html index.htm;
    3 L$ r. x* d9 H$ }, ]

  5. # M/ k7 W8 ?' Y5 Y# ]: C
  6.   location / {
    ' P, ~* w; r! a* N5 w# W- K( T) C! K
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则: h/ Q8 e4 [$ r8 o+ r# A
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    ; }' {( f0 k' j
  9.     proxy_set_header X-Real-IP $remote_addr;
    3 U1 L' D# |2 ?
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;( G4 O8 }' {, @4 Q6 J& ?
  11.   }
    * u# |# V2 K' S; x8 J
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口/ h4 _6 g, \9 S( n( T
! s/ V' B$ f3 N- `
将域名转发到另一个域名; W8 e2 S, ]1 _$ A. f% i
  1. server{
    " V- d! g$ e, X7 [
  2.   listen 80;: s, c; T0 e4 y  [: O
  3.   server_name  baidu.cncml.com;' w1 ~, o4 b; v! u  L
  4.   index  index.php index.html index.htm;
    2 h6 {: `! [, ^4 L: G  |% Q

  5. ' y! @. s$ X$ w8 i: Y6 t
  6.   location / {+ R1 Q+ q) l% \5 Y
  7.     proxy_pass  http://www.baidu.com;
    ' D4 w# A# s: b* h
  8.     proxy_set_header Host $proxy_host;
    1 [2 t3 Z3 M$ }; c5 [* L
  9.     proxy_set_header X-Real-IP $remote_addr;4 U# x# i! P  k+ K. X
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    - u4 Y2 Z& g5 q: l. g. T
  11.   }
    ! w' D, E7 W) |7 G
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
5 ]& y, h+ x. J. A( z
  1. server{
    ( d  T: Y5 p8 n0 y5 m4 Q6 O( `
  2.   listen 80;
    3 M6 F' U* [1 Q. @; R) t
  3.   server_name 127.0.0.1; # 公网ip: u% E/ u) p, }# }8 p: h2 k" e+ j
  4.   index  index.php index.html index.htm;: T- M% \9 b9 S& o0 |4 R  T
  5. 2 D6 {. {# V4 f: D
  6.   location / {
      M! S) y( u3 ?" L
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    & c, ], A6 \: l4 I
  8.     proxy_set_header Host $proxy_host;
    6 q, B& W$ z& w+ f9 r# Z. y
  9.     proxy_set_header X-Real-IP $remote_addr;
    * d( N1 ]4 ^9 M9 E1 y0 b
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;3 ^! I  T, L6 b8 ?- d) B+ {( J
  11.   }
    ! q, e& S; N7 p) p! w
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com+ W. T3 G' f" @% q5 t

0 h8 u. [+ r$ ]+ k7 ]0 z1 ~加 / 与不加 /
3 q/ Q% B' B' w- r; @; C在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径0 U9 ?" `7 M% t( q: S& p
: \# k# i" g7 t/ L4 s# d2 O
例如
# S0 p  U( \& u3 i
; P" x* g: M# O1 U% a$ L6 a加 /  A# r( R7 Y2 p" m4 s1 F: ^
  1. server_name cncml.com' g5 @* A- ]2 H- R, U8 u" D
  2. location /data/ {; \3 E" K4 m/ Q! d- _: Z" P
  3. proxy_pass http://127.0.0.1/;
    1 c# d; G9 s4 ]" s% E7 d# Q
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html; \/ O% a( Z2 i5 ^% v: u
7 \9 l' T! m2 j  N
不加 /* I6 k2 C9 P& x8 ]5 |
  1. server_name cncml.com- F. t* q; z7 Y4 N$ E+ D4 e
  2. location /data/ {6 R3 m4 V( ?$ ]8 N! p* Q
  3. proxy_pass http://127.0.0.1;$ h4 D  V$ o* u/ k1 f
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
: X. t% R% e1 s0 C# U. B
: w$ R5 e( h1 ]1 e& c: R8 C
游客,如果您要查看本帖隐藏内容请回复
1 i9 N+ j+ V& \+ @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 10:46 , Processed in 0.057230 second(s), 19 queries .

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