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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
" j) v1 N% Y6 o! v, p4 s0 Z5 A
; R" B" ?& q$ X' ]$ c" B0 y本文中,我们介绍Nginx如何做端口转发,还有各种转发规则  `# J) @1 o4 S3 N, J% C# j
7 j/ p& \; Z. c2 c6 L* g
将域名转发到本地端口) y9 P! o; Z( _' C& ]4 i
首先介绍最常用的,将域名转发到本地另一个端口上
5 Z- [" F, o9 V$ D. X  f; I
  1. server{: u& q  q  p9 E; h
  2.   listen 80;
    , D$ u7 F1 ]" M4 g- i9 m
  3.   server_name  tomcat.cncml.com;
    2 D6 H' @' ^. B/ R0 V" \8 s
  4.   index  index.php index.html index.htm;
    7 K+ n" x0 l/ m, Z3 S
  5. 5 I: V, {( V5 F( Z
  6.   location / {% Z  e( I& m# ?0 q
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    0 i# C" x5 W( h7 h/ I- P; x5 I
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    0 A$ E/ ?: ]% |( S
  9.     proxy_set_header X-Real-IP $remote_addr;
    7 M" M' r+ Z3 Z2 v3 @/ W: v
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;/ G% J: y( F3 o; L
  11.   }
    % |2 F$ B# s1 U
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
. j. [% t; ^9 m; a9 z! c" A% G. I) ]; u, }5 H9 a% r, C- P' m1 s& C9 e
将域名转发到另一个域名1 o  @' u! Q! W8 \" X
  1. server{- F4 }2 _9 u7 Z7 ^& P( L( A
  2.   listen 80;! g# u: y1 |5 U2 {9 H# H) R1 u
  3.   server_name  baidu.cncml.com;
    + a2 N( o% {9 `7 B1 ]8 t
  4.   index  index.php index.html index.htm;! s9 o8 s) x2 {' M" f" d

  5. . q1 J* s3 v- _! f/ A
  6.   location / {: U+ g: G' p& f
  7.     proxy_pass  http://www.baidu.com;
      O2 Z* N, i: V' I$ _# @: U
  8.     proxy_set_header Host $proxy_host;0 U4 v4 d5 W; `+ C2 ?
  9.     proxy_set_header X-Real-IP $remote_addr;( m# s, s6 {' G! r$ b/ P( }% y
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    0 l+ a; P& c7 u
  11.   }
      w4 Y8 X& [7 `. o* Q1 L5 {
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名  M/ w" ^% L: }* J$ @4 c
  1. server{
    ! S  h4 ~' ^8 i! o: N5 ]
  2.   listen 80;# Y4 M# Q7 p8 Q8 v# }
  3.   server_name 127.0.0.1; # 公网ip
    3 b. \; {; a8 D4 o# O
  4.   index  index.php index.html index.htm;
    ( L: Z* w+ V. R  x

  5. ) }# X! p! {- e: J9 c: W. {) p
  6.   location / {
    4 s. l  G  }0 u' ?* Z
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    2 S) \# s7 ?9 j
  8.     proxy_set_header Host $proxy_host;: ?% V  O; k. D
  9.     proxy_set_header X-Real-IP $remote_addr;2 ^. F+ A) j4 {% t: g
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;- {0 U1 _6 v, A/ k! p. E
  11.   }
    * p: w# e& f, d4 M9 E5 o! u# {
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
; A7 ?! c& ]) D. K" S' R0 b; D
# H0 r3 ?4 y7 G9 E, {加 / 与不加 /: |4 P, \; _& }0 O
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径' W, n* T4 f2 h& S
8 a+ a; m  h  J/ B3 z  d
例如
5 R( l" B& D/ C- e: O, p7 y
$ g# s4 Y  z$ b- x- e8 `& n% }2 |6 A加 /
: {! n1 g7 z+ s3 x5 x& A
  1. server_name cncml.com
    + Z7 ^/ U& {3 f% ^$ M
  2. location /data/ {
    ; p# J" ^- s: [+ D* h5 f! N4 F* m
  3. proxy_pass http://127.0.0.1/;& y2 H, {* `! X' x2 y
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
/ j* q, @; G3 u+ x3 [2 o3 l8 S0 I7 u6 f  C  ~. v$ S
不加 /
& f' p3 y+ O( R: F
  1. server_name cncml.com. N5 u% H/ y) w, b
  2. location /data/ {
    - k' ^! v. g$ D/ n! e$ s; l3 `
  3. proxy_pass http://127.0.0.1;8 a- L( a5 y3 d  K6 M' {, V0 z
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
) p* F" G. O9 ^1 O$ c
& V$ X( _* Q& e
游客,如果您要查看本帖隐藏内容请回复

1 m7 ^6 G4 s9 n1 E1 {, O" V# ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 17:20 , Processed in 0.055024 second(s), 19 queries .

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