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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
, `2 e! X8 d- I# k) I3 {
! C; i) R2 i( g3 k' @本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
7 k3 s4 n! A# A! E
/ ~& ~' X# c1 K' C6 p将域名转发到本地端口7 }8 t8 |! |6 g
首先介绍最常用的,将域名转发到本地另一个端口上
+ u" e7 `  e7 G2 b( ^7 z( K
  1. server{5 A& N3 D4 B' H
  2.   listen 80;3 O  p# Q" p% P( J" T/ {
  3.   server_name  tomcat.cncml.com;
    ' _3 s% b. y- O, }* ^6 V+ Y+ D
  4.   index  index.php index.html index.htm;1 [* ~) }" `& e. g
  5. # x% ]1 Y+ P$ l! ^8 c6 i2 Z
  6.   location / {
    - ?, D% s4 R5 w# {, N
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则! O2 W8 x4 H; C8 w' G' C+ G
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求* t6 f9 x$ s' Z) u
  9.     proxy_set_header X-Real-IP $remote_addr;6 T3 Z, h: w, {  F$ g2 @
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;- e- {1 H& M7 k" R: M- f
  11.   }
    ; \' W7 A9 i' |1 h: e
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口! x& j) s9 I, f, W0 Q* P3 C

: J5 V/ c5 j7 F: b& v! j7 s/ E! u7 Z将域名转发到另一个域名) D. t, j5 |# H; j4 S) {/ e
  1. server{# _: U( X# T1 P1 L" K1 ~
  2.   listen 80;
    : f3 x# U& [  M: H2 Z- v1 h
  3.   server_name  baidu.cncml.com;5 U1 c9 E3 u0 s9 l9 a2 |
  4.   index  index.php index.html index.htm;, E# w4 M7 D9 U0 F
  5. 2 I) {  m1 `- c# x* H4 S" B4 z0 c; v
  6.   location / {0 ?2 f9 W+ k0 {$ T, k7 l
  7.     proxy_pass  http://www.baidu.com;
    : O; T5 h* w, ~5 o8 Q, T6 C
  8.     proxy_set_header Host $proxy_host;
    , t$ K( t9 [7 E3 [; I) u+ O0 d
  9.     proxy_set_header X-Real-IP $remote_addr;
    ) P4 v- [/ T7 L; |$ [. r) g
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    , w( C5 h' F% H( h4 k
  11.   }7 Q5 r6 _) Z+ x$ S; E6 E' e3 J  m$ v
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名7 ~/ q* @% _% X: `* V# e- F7 J
  1. server{
    7 i& D  c% l& F* }9 c
  2.   listen 80;
    2 L: z- U% z" z: M" @: b
  3.   server_name 127.0.0.1; # 公网ip) N7 z& B# z: n; p; k
  4.   index  index.php index.html index.htm;
    1 E1 l5 B0 d  x" ?; P7 o5 S
  5. ) C7 e. @2 M4 `" q" }
  6.   location / {
    + W' g; Q( F( r8 Q8 _
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com6 ]8 v# J9 K( f7 @  `2 |/ l
  8.     proxy_set_header Host $proxy_host;- M/ w  p+ L8 Q, A5 j9 m
  9.     proxy_set_header X-Real-IP $remote_addr;
    % z0 X9 O( e$ B* ^. y& k! `
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;: ^- U3 h/ C, r+ o. O
  11.   }
    % k2 y. p) ?4 l% E/ Y6 @" U
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
- u  U6 K) ?; U7 U0 x( M/ t' \& h4 t" f- q& s! U! y' E
加 / 与不加 /
" v& m! u6 l& I8 V3 y: ?6 \; T7 ~6 i% X& @在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径" `+ O+ P! ?- }
7 p7 G- M# i/ f- g
例如% @, A( O- u3 t! a
8 p& y: Q6 S0 g
加 /( C7 D4 |6 }2 W) M4 Z
  1. server_name cncml.com: G( ^$ s. e0 d4 p
  2. location /data/ {, F- U3 m) Y  Z
  3. proxy_pass http://127.0.0.1/;
      h) k7 E* E+ `
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html# h0 Q3 s, @2 C6 C' b% E

" N) U- ]; h& |9 o! a不加 /( @, W, ]3 U6 V3 @. L. g* {
  1. server_name cncml.com/ {" O6 M0 q6 P$ `8 {& j
  2. location /data/ {
    7 p" f$ V5 a9 k" o+ P* O$ g
  3. proxy_pass http://127.0.0.1;6 v8 q7 D* Q* f. m( A. q( m4 j  e
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html4 a+ L6 t, |& z) Y# B. E

. K5 @9 o9 H' }$ ]4 {+ N) W
游客,如果您要查看本帖隐藏内容请回复
) i9 e- M5 `+ f- h( M7 l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-9 14:06 , Processed in 0.131796 second(s), 19 queries .

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