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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
5 r" L( u, O* Z  u6 E+ M- }' ^6 M4 ^( I
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
! A  |& y1 p: V  T1 j& ?
. J, n1 L6 C4 P/ e9 u1 ?将域名转发到本地端口
; n  v: c0 v$ P9 a+ _& V+ f- c首先介绍最常用的,将域名转发到本地另一个端口上2 k  F6 D, e/ y! ~  j1 h: G  ?2 d
  1. server{1 j7 W9 h. P5 Z& [, M0 c- a( t
  2.   listen 80;
    * Y$ b4 a# T( K  V+ c
  3.   server_name  tomcat.cncml.com;) C  o9 |6 E; c7 d% K
  4.   index  index.php index.html index.htm;+ N& ]% V  b: f+ u
  5. - b7 f% h9 x4 z: ]
  6.   location / {
    . X& @7 @9 C* d9 S* Y1 i
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则" E' X1 y# H$ Q3 _) ]; _# s( [
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求( i" J: S6 w8 p; |8 F
  9.     proxy_set_header X-Real-IP $remote_addr;7 ^+ Q; c: }2 U2 J/ [
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    . O' J# e8 _, X6 S5 w, t+ Y9 V
  11.   }
    3 b& q1 l' j: ^9 x7 g
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
" w7 r. m" Q1 C5 H
$ M' I( d* h- f将域名转发到另一个域名
, _5 _5 I5 U! d, ^1 D- f
  1. server{, e: g1 a2 L& x, s5 r+ H/ O
  2.   listen 80;
    6 F& ?% i8 C2 v4 {  L5 U
  3.   server_name  baidu.cncml.com;
    . W: \" Q# Q% K! P6 o# S
  4.   index  index.php index.html index.htm;4 P, \* |) w8 F& \( I8 }) C
  5. : f/ l) [; G3 V* `
  6.   location / {
    & p) b* a1 E; W  }- p; Q/ o
  7.     proxy_pass  http://www.baidu.com;
    2 l7 K3 v" {4 F+ b
  8.     proxy_set_header Host $proxy_host;
    ; s! K9 o; K, i/ x4 q7 u. v
  9.     proxy_set_header X-Real-IP $remote_addr;: V* {: ?: m/ i; w5 I1 y- [
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    8 |+ N% b0 R) `# J) r
  11.   }
    - ~4 L; T4 x  B5 |
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名+ x. k. z( Z4 K
  1. server{& o  m3 p6 d# g0 J$ V8 E
  2.   listen 80;1 C- ^5 |- r6 T4 D
  3.   server_name 127.0.0.1; # 公网ip( e3 `5 g& h+ M  V5 p
  4.   index  index.php index.html index.htm;
    ( o. M9 A4 v9 {. _( ^9 U8 N, ~

  5. 3 w+ a3 U( }9 D( g4 y" r6 f: J4 o0 _
  6.   location / {: ^9 t+ v9 A1 b" K: ^
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    & ]" L6 S/ F, W' U& i0 E" x$ H9 Y
  8.     proxy_set_header Host $proxy_host;0 @, M6 e8 U9 x
  9.     proxy_set_header X-Real-IP $remote_addr;
    / u9 h, S, K2 H: y; f! ^
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    . `8 f' y  u- B8 S+ h  [! G4 `0 ?
  11.   }
      {* U* Z# r1 U$ H6 `6 t
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com& ~: k: r$ g1 f7 T$ ^3 K

! P3 {, U- p) {' a- j, z加 / 与不加 /- }5 R3 T: Z$ |
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径9 {* G; l' m/ p

' S& d8 s* s* ^" a. U例如. c& w& J* Y; _. a6 i7 B' r$ U

5 d$ ?) n, ^& T( Q2 J  G: p加 /
$ a/ ~* n$ K: W: b, ~% I5 w6 R
  1. server_name cncml.com$ k5 a- W( _' X( W' s( D
  2. location /data/ {! \5 T8 h$ m7 `- v& u
  3. proxy_pass http://127.0.0.1/;
    ' F2 p+ }& m) l5 Z8 p
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html0 Y2 d: E$ Q; s- y$ R

0 R. }3 d7 z4 v: S1 Z9 C1 m不加 /, Q: X' \$ M: a7 T9 {! b3 c+ w
  1. server_name cncml.com
    / O" q7 ?7 j/ g, x, q
  2. location /data/ {( `1 x" W2 i1 ~. i/ F; N
  3. proxy_pass http://127.0.0.1;
    % ~6 P- U% A! B3 ?
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
4 e) ^% R8 v4 R. o3 y' M1 \
. H7 U% z: b- P3 X
游客,如果您要查看本帖隐藏内容请回复

4 K* Z; G( {5 w! a! J  R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 15:01 , Processed in 0.055566 second(s), 20 queries .

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