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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发0 ~, p( F) S+ d) \# Q
; `6 m4 \2 M- m4 c$ n% B9 x6 x; f( [
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
/ T& I3 d- S5 _/ U0 u6 u- Z: Z, v' K$ \2 T3 l. P( R; Z
将域名转发到本地端口
  m& |* Q0 D" e5 o0 R+ t  J% e: F1 p首先介绍最常用的,将域名转发到本地另一个端口上3 \9 d# n# d! e& @* t* X
  1. server{- y/ B5 B- p6 `9 O
  2.   listen 80;1 a- B+ `. z; ]2 Q1 x- G
  3.   server_name  tomcat.cncml.com;
    / C; q# j1 p: c2 t- L; z+ s
  4.   index  index.php index.html index.htm;
    , {6 t, I6 R3 {
  5.   o% U, C+ L; A# n; h* @
  6.   location / {. o  k; _; k, F2 |# n( [
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    $ c2 ~; U; P) R. A+ ]
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    6 H6 L8 \2 v# P5 Q
  9.     proxy_set_header X-Real-IP $remote_addr;
    8 [+ y) z8 F; I+ m& \9 E
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;! V( z. {2 ^0 [* u$ G4 n9 @( l3 C% E
  11.   }
    : p- Q6 [: G" v/ B# u
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口/ W6 \3 k4 z( w6 _3 x
4 [7 h% j- F; Q* x
将域名转发到另一个域名
  ~% H" K$ g: d  f* C
  1. server{7 C+ n0 _  J- K$ _8 ^! r: z6 j, e
  2.   listen 80;& o3 e! a% L; L% I. }& f7 c
  3.   server_name  baidu.cncml.com;  y+ e% D# H. c5 Y
  4.   index  index.php index.html index.htm;" U! V& ]1 X9 m% W! g
  5. ; u+ S2 W0 L% z' S) ?) ?2 I" j0 f
  6.   location / {
    : }* ~* S9 g& H. u5 Y
  7.     proxy_pass  http://www.baidu.com;
    : W1 C1 J3 F' {. Z2 n. I
  8.     proxy_set_header Host $proxy_host;
    # Q& z2 q3 m0 e& j, R
  9.     proxy_set_header X-Real-IP $remote_addr;
    * P6 ?7 _4 W& X' b/ A: C
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ( v, i; v9 N+ S& t" ^
  11.   }
    5 n3 a: {4 K2 `  ?/ e5 u( B* ?
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
* E0 O* w3 f: N+ c
  1. server{
    8 a5 {9 @$ t( {' P- h, A: k6 Q
  2.   listen 80;3 M% q) A# J$ n# o3 H7 o
  3.   server_name 127.0.0.1; # 公网ip1 F7 }) y) Q- O4 _# y8 N6 \
  4.   index  index.php index.html index.htm;" l; ^6 u/ |1 F# O: V  M# U1 T
  5. / S7 I, ~4 X3 E0 N
  6.   location / {
    * F& I5 s1 ?0 C) \( ~
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com) U5 x* L# P& I; W* S7 v3 C
  8.     proxy_set_header Host $proxy_host;
    ; Q/ P0 O8 {5 l' @0 R
  9.     proxy_set_header X-Real-IP $remote_addr;5 A; m7 p$ n6 X0 h
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;3 ?, v2 S" m( S5 [  `
  11.   }
    - ~  s$ N7 x  n: n+ [' J8 |
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com$ j% b+ p/ z3 K! @1 F' K
- S. E* V( r" @7 j$ @9 @
加 / 与不加 /
" ~- F/ i+ S' |1 Y6 c) \0 ~  j在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
; L9 C, L7 o' ]* ^% |9 X' @- e+ ~1 ~9 U" i
例如
% w9 c8 f" Z# F
4 N! x4 F* Q) p0 R% N% M5 V' e加 /9 k; J; n6 s1 ~  q1 I  j
  1. server_name cncml.com
    # e8 n5 r, _" h  ]
  2. location /data/ {
      |( h4 v( G0 j
  3. proxy_pass http://127.0.0.1/;2 h5 f. y3 f# Y) D; O# l/ d* N4 I; ]
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
1 D& I+ w" A; A# F" p" _
: b  `$ D8 D- p) Y& m不加 /
7 \) x/ `, |7 i# j9 ~  p$ H" _
  1. server_name cncml.com
    - T) a4 Z+ y1 ^) l5 ?: T. B
  2. location /data/ {
    4 r$ Z9 Q+ m9 K4 b
  3. proxy_pass http://127.0.0.1;
    . R! h1 C5 v" z$ l1 T) E! J
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
1 S2 ~  m8 w% @9 z. v  C7 b" e+ c; x5 W# R( Y; R0 H% }) O9 f
游客,如果您要查看本帖隐藏内容请回复
9 w: M1 {8 M* G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-19 22:38 , Processed in 0.059676 second(s), 19 queries .

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