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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发" ]: x  p+ u- C8 M
) ?. U! `) u& @1 _: K
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
$ N7 F# g1 t5 G  E  H2 H$ I; m& U. W9 a" O- _" v2 j. G5 {) n% O
将域名转发到本地端口% Q8 f0 m' e: K1 n5 i
首先介绍最常用的,将域名转发到本地另一个端口上
- ?* b$ i. U( X2 ]
  1. server{
    $ U! \/ a6 `" D& X6 Y. X2 ^# u
  2.   listen 80;3 k% E' |/ a+ Y1 K
  3.   server_name  tomcat.cncml.com;. T1 J# u3 t0 t
  4.   index  index.php index.html index.htm;* p  G2 m' S7 f* I! |$ _* `
  5. ! f- W' I2 l2 }. u+ T
  6.   location / {
    . g7 @: {9 L! u
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    , n4 q& E1 m: s( z9 U; L% d$ U- J
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    / G; T) I6 M! s. p5 H( I8 E" O6 a
  9.     proxy_set_header X-Real-IP $remote_addr;0 r* _$ M; q' @& [5 I7 N
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    1 l5 S2 Q0 ^( u
  11.   }
    9 [2 @( G/ i. t! Y2 Y# o
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
/ {! @+ G4 W1 E4 u% h# ^' C. U4 ~8 q. n
将域名转发到另一个域名
1 @& A$ U* A; o6 ~5 K- M9 P( }& y
  1. server{
    ; [8 l% A9 s4 P7 n/ m% e% Y
  2.   listen 80;
    ) u" X3 O) a! Q+ B+ m- r2 D% M
  3.   server_name  baidu.cncml.com;7 \& ?0 N- G, y: k" q' P  M
  4.   index  index.php index.html index.htm;0 }# z) A8 K5 j, j- }( ], o
  5. - _5 I3 |- }3 T# B4 m( n& F  Y& r, z
  6.   location / {
    # p2 @0 l& \' F9 `/ t: `
  7.     proxy_pass  http://www.baidu.com;) R* c- ^  ?* a
  8.     proxy_set_header Host $proxy_host;
    9 m+ J- ?# Z3 m$ k. h
  9.     proxy_set_header X-Real-IP $remote_addr;
    / ]2 [# w1 {" W6 o% \8 \2 }; }$ Z( d
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;5 V' l( f6 V6 \$ w" F
  11.   }
    3 d% X. Q9 E, ^2 T7 U
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
# I" ?2 z8 h+ c/ p
  1. server{$ W; c, j' z, s4 @3 z0 S7 i; l
  2.   listen 80;: H3 C1 O4 F& `% ^6 M1 S' |
  3.   server_name 127.0.0.1; # 公网ip% S9 y. H3 X+ T& o
  4.   index  index.php index.html index.htm;6 l7 c! K9 y2 z  _  R& `

  5. , S/ y& X: m6 B# \3 y
  6.   location / {, D9 o- e. ^5 O! d+ T# _
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    1 C) g8 }- v4 E" p% ~& \
  8.     proxy_set_header Host $proxy_host;
    . N; c. z: k8 |
  9.     proxy_set_header X-Real-IP $remote_addr;
    1 ^# R8 i7 p0 V, W6 b8 U0 _
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;2 A1 D6 e" t# S
  11.   }
    5 }9 t, s- G0 Q; ^2 K& N. x& P
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com7 l" q) M% l' S+ E8 U+ M9 E9 e

8 L0 i, V5 N# K1 y9 p# C3 f, |加 / 与不加 /  \; y2 t. x- V0 t
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径4 `, ^2 s3 F. q8 s. u$ f
; d' B" W5 c& Z& m
例如! o# ]) k9 g  H  B) ]) Z1 z
7 a, L" ]8 P6 S- B7 y4 t6 H" N
加 /( j4 P% e" d6 P: Q8 `
  1. server_name cncml.com" p& l; {' u0 E/ l; f' c
  2. location /data/ {
    ! q* N; |/ J" @  |. L: @
  3. proxy_pass http://127.0.0.1/;
    7 v9 ]: \% Y4 y0 y6 f% @! n. N
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html) Z5 c# b6 N+ X' |5 o" y7 x
4 e  u6 h' E6 a0 l4 k8 d  a0 C
不加 /2 H5 R) |; R, k" y2 n7 a" B5 \* x. g
  1. server_name cncml.com+ J0 @! s3 u6 F' H
  2. location /data/ {
    % Z5 T6 h) u: Y. j
  3. proxy_pass http://127.0.0.1;, r# I" }3 j$ R, t$ X
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html. @/ `' h7 ?7 O- I$ }# d2 z$ F+ U
. S! L/ F9 V9 p$ ^0 x1 W$ p* F
游客,如果您要查看本帖隐藏内容请回复
* Z! D) N# N1 o# i- Z4 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-20 12:30 , Processed in 0.101413 second(s), 19 queries .

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