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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
& Y' g% n! o" L7 A( U5 C/ ?+ {& _# k: n. B/ U5 f# G5 T
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则/ S- o- ]! B7 ^4 V/ L

- T" N. e4 y- j. ~* }将域名转发到本地端口
/ J' ?: @+ d* E2 h首先介绍最常用的,将域名转发到本地另一个端口上
" O5 A$ ?2 h) @6 S9 m
  1. server{
    9 e$ Q, E2 s3 y! b/ o4 Q' @# u
  2.   listen 80;
      K5 F/ _( S7 _' y) o
  3.   server_name  tomcat.cncml.com;
    - k$ q8 Q* q0 f, `+ x3 Z, y1 E* ~
  4.   index  index.php index.html index.htm;. n' d; {0 T- W0 Y9 p

  5. ) {( R- a: a+ K9 a
  6.   location / {4 B/ h/ O' b4 }! X$ ?, Z
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    - `8 U4 u) g: y2 G* f: m0 O
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    2 M% ^) t8 y# v: I: @& F! o
  9.     proxy_set_header X-Real-IP $remote_addr;6 z5 L6 |: \; g: I& U6 [* O
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;9 ?* W8 ~& t. x% b/ b; F
  11.   }: J! y  s! d. V
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口  @3 a8 _, V" m& o
, K2 X' B% B# U4 s* Z& A
将域名转发到另一个域名
: L7 {% k; K( i( `; A, q  i( T
  1. server{
    $ A, V4 ?* x* U5 z( b4 V7 B
  2.   listen 80;
    + X2 S6 q" m; ~
  3.   server_name  baidu.cncml.com;
    4 w0 a# c% v( A9 B- p- N
  4.   index  index.php index.html index.htm;
    / I! z, E) r- k  Z0 o5 u0 A

  5. " m; p9 ^" P4 _$ A  ^8 D" i' f+ e/ W  a6 g
  6.   location / {. V! U0 x6 r9 K# k0 v! y4 l( Z
  7.     proxy_pass  http://www.baidu.com;5 ]# r/ O4 A6 ]' l# \8 O
  8.     proxy_set_header Host $proxy_host;3 I( u( g; L/ G5 L, Y2 i4 U
  9.     proxy_set_header X-Real-IP $remote_addr;
    ( F3 u8 f9 N' ^1 o/ P2 q4 h- v3 _
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    % T7 `% M) X$ m6 S; q: R
  11.   }
    ! N+ w1 q! P. f3 m8 d
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名0 k  T# r& L5 d9 p
  1. server{3 r  |% A4 O4 S7 V5 [( ~* Z
  2.   listen 80;
    ( t4 L* u, K: d& }
  3.   server_name 127.0.0.1; # 公网ip
    & L$ u% V& i6 i+ f$ s# Y
  4.   index  index.php index.html index.htm;6 ?9 {% q# H$ |( |

  5. 9 l! e! Y5 s; x8 {' x
  6.   location / {3 `! W8 R6 M* q9 Q% o% N& p* h
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com0 S: S+ b# U1 {1 W% M: p
  8.     proxy_set_header Host $proxy_host;
    " r6 p- {( o( d6 X4 t0 T; F
  9.     proxy_set_header X-Real-IP $remote_addr;: v, |$ q4 \! K7 K
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    1 e. a7 g7 T3 D) x
  11.   }
    1 O& z# b9 f' \% L! K
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com0 B8 G1 Y2 ]+ G% x
5 v8 C. l. a/ [- q0 s4 v& p- r
加 / 与不加 /
# Y5 X' V" R7 w- h  u5 N+ Q/ x在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径( a& z: ?: _" ^, @
. ]+ }2 \/ n* d  Q4 q
例如+ ^; b+ `+ _+ Q% r" x" j9 ?

" R3 c6 Z" |9 `加 /( _5 c) n0 [" t  Z7 K' o2 Q
  1. server_name cncml.com
    / C; C0 C6 J% M. j& [
  2. location /data/ {
    ! ~3 N( H: C3 }. M3 s+ r1 H
  3. proxy_pass http://127.0.0.1/;
    9 h+ ~5 C6 ?; |; V) k3 A
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html/ i; S  u. L$ w% g

; P0 v6 g, U1 Z) V1 A" x+ O. C不加 /
* {( O; S( n  _" ~% s( q7 R
  1. server_name cncml.com0 O1 h0 r2 Q5 |+ f# `( U2 {! c) y
  2. location /data/ {
    1 Y+ n2 }2 i3 d) ~6 o( v& B
  3. proxy_pass http://127.0.0.1;
    3 |* f, s: B( |: G# r
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html* T3 ^4 W  g+ R' F! `7 G! N
8 Z  N% t7 `. a5 u( r' _
游客,如果您要查看本帖隐藏内容请回复
6 M, L: J$ W3 v. I0 u* u) X( G3 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-9 13:58 , Processed in 0.154453 second(s), 20 queries .

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