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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
+ a6 Y# C! j6 s$ P* y/ M
  A+ e( G8 o" k3 ^5 D, P本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
! h" D! p9 T; S# z9 n6 r  A' K. s8 w5 }: c
将域名转发到本地端口  ?9 G0 A# x+ w! A+ ]7 @, k! q. N' n  f9 p
首先介绍最常用的,将域名转发到本地另一个端口上8 x2 O9 U( k7 |, o5 h6 @
  1. server{* v* M( E8 h$ Z
  2.   listen 80;$ t% f  E$ u* L+ {$ b  T' v7 l  o
  3.   server_name  tomcat.cncml.com;
    . U3 S  q- t% s% u& O; b
  4.   index  index.php index.html index.htm;
    4 A4 i2 d: {. y

  5. 8 L! Q8 l) r* S
  6.   location / {
    $ b! K  C$ P: i" |# }4 i2 B
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则/ u( q5 C: H6 D2 |3 l
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    " ~- M7 a; R5 w5 a! P, B
  9.     proxy_set_header X-Real-IP $remote_addr;
    , b3 |  o( B1 @) @; f9 X& {
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;. z  r0 E4 {1 L% ]1 i2 @  i, ]
  11.   }
    ( |) c2 e& Q  r1 h' X  L* u, u
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
% Y, P% f  K! r9 x! A4 m5 Y) ?! y4 N
将域名转发到另一个域名
) l/ P! Y/ _. ?8 S) ^
  1. server{6 l* Y- x, q( u2 Q
  2.   listen 80;0 q' `- X& @* v7 o$ l
  3.   server_name  baidu.cncml.com;1 M! R# p& f( q4 V% S& V/ S3 F5 v
  4.   index  index.php index.html index.htm;
    . {& ?: K$ x2 X/ {* }! ?, R
  5. % Z) a1 |! }+ G2 v' D
  6.   location / {
    $ V* P- T  J: N- y. Y  H
  7.     proxy_pass  http://www.baidu.com;
    6 t$ [1 _+ G) g
  8.     proxy_set_header Host $proxy_host;7 }3 q" ?9 g7 L# L
  9.     proxy_set_header X-Real-IP $remote_addr;. l& B0 A* {) y4 ?
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    5 v7 ?9 B$ U; H4 T
  11.   }& z6 {) s! u4 U* s# |8 e
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名! s# _) I0 q& O8 }
  1. server{: i# e9 o4 [0 g5 Z
  2.   listen 80;
    4 \3 y/ h, S4 e. i/ `
  3.   server_name 127.0.0.1; # 公网ip
    9 d5 B' s* y4 }4 U: |6 V! Z3 r
  4.   index  index.php index.html index.htm;. Q  F; B1 n4 g' B
  5. . ~9 m! Y* S2 S1 ]/ S6 R; Q+ T6 t
  6.   location / {
      }, y7 O+ v  o4 _" [
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com0 Y8 `( [6 g! g# W
  8.     proxy_set_header Host $proxy_host;
    , C$ w/ b* N3 J3 j; U2 h# d# _
  9.     proxy_set_header X-Real-IP $remote_addr;
    4 {, g" y. r8 J: f  f+ p) }; v, P
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    + }3 ]2 q* f: V+ m+ p- i) C- j
  11.   }; ]1 A6 l2 ?8 C% d  [3 V# e
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
6 w* V& I7 R  H7 p$ q1 Q$ P' I: ]4 g# o2 m& W
加 / 与不加 /
& A9 @. s+ r1 |  n, A, ]( }5 |% s在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
( d3 T9 V$ l4 |2 o) U6 H, b- s  J' K! ~% b
例如* i2 o7 n7 A) l' o" a: i

% i; y+ ~$ h; [, u2 |" J加 /
  ~( @) I- D! u' R- _- H; s
  1. server_name cncml.com
    9 _1 u! b0 E# W) i% t: ~' i
  2. location /data/ {
    # S7 S  S9 C, X0 M
  3. proxy_pass http://127.0.0.1/;- A# B- F! M( L4 n: O+ j
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html; }% k; U* V( v/ p2 E8 k6 J7 k& G' r
. ^, A4 t& p8 c! @7 L
不加 /" V' [4 M& U! ~
  1. server_name cncml.com, j0 O4 Z% l0 @. V
  2. location /data/ {
    ! ^/ D, B  h2 e2 i( C
  3. proxy_pass http://127.0.0.1;6 w% w8 v" A0 |
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
2 L7 ]8 I" k$ w# Q. l5 m& f& @
游客,如果您要查看本帖隐藏内容请回复

) L( J/ `/ P. j7 S8 z, V+ x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-10 00:42 , Processed in 0.128044 second(s), 21 queries .

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