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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发; o; c  L8 ]7 a. k( ?' l& S+ B& a
- e. d. n/ S" k7 M
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
! o8 o! c+ C8 K
0 c: A2 l! v( ?! ?9 b1 @将域名转发到本地端口
, L$ g1 h% u# e9 U首先介绍最常用的,将域名转发到本地另一个端口上
0 e# b- _$ B: [8 K' c* b( \) U* w
  1. server{
    , m1 j, Y: A3 m
  2.   listen 80;
    ( T! ]( ~3 I% Y1 X& f! y
  3.   server_name  tomcat.cncml.com;. b' j6 [  v% k* V5 t
  4.   index  index.php index.html index.htm;
    $ h) b5 m1 U! [8 Q# F
  5. 8 C4 x( Q, l- j2 O$ J
  6.   location / {$ R" U& B+ n" s. P
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    : s/ a$ z9 r8 z2 y
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    " f* m4 e; l* `1 d
  9.     proxy_set_header X-Real-IP $remote_addr;: y5 ]" A& X  Y' \0 R* g( O' w( T
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;& O$ F5 b+ C# |  Y
  11.   }
    ; S* E, D% X: X
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口* W. x$ T5 E! S) K( M& B' V

, M# K* s, [. c将域名转发到另一个域名5 \7 G, m) y9 c" o9 p
  1. server{
    # N2 `7 S5 g- k; o7 j
  2.   listen 80;
    ( A2 C2 _" e* p! Z( H
  3.   server_name  baidu.cncml.com;* v6 E# T' K, S. r, h& }4 s6 \; G
  4.   index  index.php index.html index.htm;
    ( l. i9 O& ~/ y& {( _' @
  5. , L* ]+ M1 {" x% G7 ?  k7 e1 _$ \' q
  6.   location / {- C7 ?) a* n( M+ ?+ q6 o$ d( N
  7.     proxy_pass  http://www.baidu.com;
    ' k' e. F0 A/ s$ y* m* t4 }
  8.     proxy_set_header Host $proxy_host;
    9 y$ U  \% f6 W
  9.     proxy_set_header X-Real-IP $remote_addr;$ j" K& Z5 D) m1 V+ D$ V
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    . u  s  H) G4 {  v6 i$ q
  11.   }3 t; ^6 O' w  [/ [* B* |8 x
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名; ~+ d' j9 }9 ?: f9 \4 X
  1. server{
    ' w6 x* }4 t1 ^5 M
  2.   listen 80;
    # a* _- `+ x7 g/ f' c9 x
  3.   server_name 127.0.0.1; # 公网ip7 O8 [9 H+ z; `6 R9 V
  4.   index  index.php index.html index.htm;; h( A, F5 r+ f  W

  5. ; D/ s6 p. K% U& c$ }4 ]* w
  6.   location / {9 @1 w2 h2 x2 D; s8 p- Y. v
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    % I7 A8 @7 y, Q% ?- ?. n: l2 e
  8.     proxy_set_header Host $proxy_host;$ L; _5 i2 a7 d1 F
  9.     proxy_set_header X-Real-IP $remote_addr;- E3 T+ V: n3 I# C
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    4 }* b# y8 I! |# ^2 j
  11.   }
    7 `1 Y. m" y% B- [+ Q8 b
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com, V7 X8 b: ]( J$ B
; N$ F6 _+ E9 c' ~4 Z8 e# v
加 / 与不加 /3 R8 N% ?9 S; |8 m  C
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
$ E0 l' P" z; W- }7 ^8 s  j+ p; K: q" g- I# J* L
例如
0 @) m$ @" t' A; ^4 Y& u  T/ B& S# @
加 /
5 ?8 x4 T1 D+ _; f" S
  1. server_name cncml.com: B- f  L3 A# {, X% I
  2. location /data/ {8 i" H$ R: A3 _' _: \% I# E
  3. proxy_pass http://127.0.0.1/;2 \9 M% h" v0 X) l/ ^; c! L0 K
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html3 q) E7 d1 t) `( c/ s) \! E
/ k5 q- q& y4 P/ h: e+ V
不加 /
- d& J4 ?. ^% e0 v5 L
  1. server_name cncml.com  N; x5 k0 d5 B6 {5 C0 z+ u
  2. location /data/ {
    3 L. G1 u/ w3 E! j- u; P
  3. proxy_pass http://127.0.0.1;
    / a9 m* T; O( z# D* P9 ^2 ?
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html$ {4 t  b4 T9 D

; @" H3 v! {9 a; N7 n' G
游客,如果您要查看本帖隐藏内容请回复
1 \) l& s$ B7 |( a" L% B' p: i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 11:41 , Processed in 0.051030 second(s), 19 queries .

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