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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
6 ~' V* F6 @' x" J9 x$ Y- ]" A& @& M) e
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
4 ~' }+ Y8 p& n! P5 ?. }6 {6 p3 ~9 Q0 b+ q/ K
将域名转发到本地端口
8 x0 ?1 n& }9 U2 T3 T) k% r2 O首先介绍最常用的,将域名转发到本地另一个端口上& a- K5 ?1 I% A; x
  1. server{7 E/ g  ~+ }/ t
  2.   listen 80;  K: f/ w5 K) [
  3.   server_name  tomcat.cncml.com;" v7 U. V1 l/ U: ?# H8 y7 H
  4.   index  index.php index.html index.htm;. Z7 m1 o( q- n: H* h* ?

  5. . X4 l! M; D  u7 _: t
  6.   location / {
    ) \, {  g& s  n
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则- W0 P3 R' V$ r7 v  N
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求$ Y, G9 c' |3 d" @0 ~
  9.     proxy_set_header X-Real-IP $remote_addr;- r* |; c3 _2 n* T# C
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;' \& l. ?& Z+ ?
  11.   }
    5 r0 ^5 H( E; |" M( `
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口6 G" I5 r8 x! t/ C

# }5 X  x$ p  m: Y- E1 }将域名转发到另一个域名
: ?# x8 L! |9 c- _7 D- g* d+ s
  1. server{: D' O+ f  R3 |/ e# N  c( N6 d$ b: S% ^9 E
  2.   listen 80;
    9 F% W9 [% U- |/ s( z2 I
  3.   server_name  baidu.cncml.com;7 C. V$ @; ^7 c/ R" V' [+ _
  4.   index  index.php index.html index.htm;
    8 s1 ?" i7 n, f! {7 [, K( k

  5. * n2 ]! Z" d  A% p
  6.   location / {
    5 S% p7 X% f' C7 G/ H
  7.     proxy_pass  http://www.baidu.com;
    5 d, E1 ]& I# v  S# j6 h; P
  8.     proxy_set_header Host $proxy_host;$ h! L* b* m) {' P1 t/ A
  9.     proxy_set_header X-Real-IP $remote_addr;
    7 A% j( J4 `; ]( |7 E
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    5 O  m9 L) d' h
  11.   }9 j8 U4 B% Z% W+ f4 [+ I' `- |
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
1 H8 @1 t" w0 m5 }& q2 e
  1. server{0 q9 \$ J7 I5 Z) g. w( C2 A0 ?. W1 y
  2.   listen 80;! e, d; a2 k9 I; \0 Q
  3.   server_name 127.0.0.1; # 公网ip# r1 P6 F& X8 ^) j  x+ ?; O1 [
  4.   index  index.php index.html index.htm;
    . D" E* I. }9 D2 G: D6 h

  5. 4 Q. J- [3 _, ^( ]
  6.   location / {; o9 u/ }  D6 x2 n/ U+ j- D* @
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com0 @4 [' F) I- n( I1 {
  8.     proxy_set_header Host $proxy_host;
    ' M2 W( ^1 k* z" K( U
  9.     proxy_set_header X-Real-IP $remote_addr;2 D2 U5 f6 j4 f. o
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;2 F2 _: U! o5 s& j+ l
  11.   }
    ( d9 n. D, t4 q8 Z; d' F
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
9 f+ I  z" z7 N8 }* J! E. Y* [  t, G6 r" C: m9 N( w( T, Y
加 / 与不加 /
) d, D# S8 K* G2 `9 y+ h$ {1 P- N" C在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
. S" k* Q8 c- G. K& U' Q; e
9 |. N' @! [! d例如  `: t1 |+ N5 j& O; ~2 @) f

# Z3 B% S$ }. R7 [加 /6 _6 G& {, m0 e$ u4 X
  1. server_name cncml.com
      e( D8 {1 }; Q- k
  2. location /data/ {
    ; v, g* L3 S. ~8 s( x0 V4 g
  3. proxy_pass http://127.0.0.1/;5 d* V" C$ H% ^
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
( H1 |, P# }: p/ ?. }  J0 o5 B- X! W5 I' |/ G3 j: F/ G
不加 /
9 j3 \" J$ }- C& U0 l
  1. server_name cncml.com' Z# Q* ]4 x/ C; f! w
  2. location /data/ {
    - h6 O$ b/ P7 B
  3. proxy_pass http://127.0.0.1;
    : _( n! o# h& ^( T: @
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html/ m' g+ Q/ y) U  |/ Z

5 e: B: U2 V! o7 @
游客,如果您要查看本帖隐藏内容请回复

6 z1 J- T0 Y) n* V& ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 21:29 , Processed in 0.057498 second(s), 20 queries .

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