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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发( S- m/ a; a; J4 V- u9 I6 x5 e
( f. D3 I5 f# z8 C- w0 J
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
" k2 |  `; j" s+ m. R9 O& C* y) |( O; G
将域名转发到本地端口
0 e: a. i; q# r首先介绍最常用的,将域名转发到本地另一个端口上
. I' B, B+ `, C5 |( U! Z- K
  1. server{
    ( }6 G$ L/ R' M  ~
  2.   listen 80;. f4 z8 I6 v1 x; D, O
  3.   server_name  tomcat.cncml.com;) L' P. y3 r2 z9 S0 L2 o* g
  4.   index  index.php index.html index.htm;( W8 N! M1 Y  t0 L* f, O+ c3 R. L

  5. % \8 M2 v$ Z2 Q! I8 ^
  6.   location / {" O" G: S  \8 \) ?7 i
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则+ @: y5 P! R7 |) B
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    ' Y" `; z+ \, `! X3 J
  9.     proxy_set_header X-Real-IP $remote_addr;1 j4 S0 K' o8 K$ _( E
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;+ v& `. {4 {9 ]' v
  11.   }) {- i8 F2 J0 U0 w4 w3 H# L9 {- y
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口' M! Z" y) T0 h+ i/ H: K1 y- n1 w
, ^; ^* J  e' m( Y" ]" m
将域名转发到另一个域名
7 I, |2 j- g5 x2 S, U
  1. server{* r4 L, G5 J5 V  ~. m7 ^6 }. M
  2.   listen 80;* F4 T+ l7 E5 n, ^
  3.   server_name  baidu.cncml.com;
    * A; p9 D0 d/ @9 ]8 i: ?
  4.   index  index.php index.html index.htm;
    $ m; B! x( Q( @7 K

  5. 9 B1 G5 z* Z% u
  6.   location / {
    2 ?6 J3 J7 F2 _8 J; {) s" ]* v
  7.     proxy_pass  http://www.baidu.com;: `, U% Z/ ]5 z' h# v3 D& l5 c3 m
  8.     proxy_set_header Host $proxy_host;/ X  s; ~* @  \, F, c
  9.     proxy_set_header X-Real-IP $remote_addr;
    9 B( \5 s2 G. ~
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  v( ~) i- X" r2 b6 q
  11.   }
    . T: w# d* i" A3 v6 h' b
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
2 T9 L/ p! h5 F+ N5 [4 R
  1. server{+ H, v0 P4 Z$ B* I2 U3 b% b& J
  2.   listen 80;$ Z8 F/ v; S* N+ O
  3.   server_name 127.0.0.1; # 公网ip
    2 @. U6 `% K! m  u
  4.   index  index.php index.html index.htm;' H1 V; u' t/ `( L7 K4 v
  5. 5 z: R! Y( S8 K. s# Z$ Q% Q9 @; l
  6.   location / {
    ; Z4 G$ @' b. w
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com, |5 [5 ^0 D! g: T
  8.     proxy_set_header Host $proxy_host;5 b" s! i$ F8 l- q8 {
  9.     proxy_set_header X-Real-IP $remote_addr;
    3 Q1 a7 k8 \; n3 B9 e, ]
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ( r! W7 U; R! M5 ]
  11.   }" I* s$ n+ T' F4 f
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com! ^/ a" f4 D  |4 s

8 L% {1 N* F* P8 h9 p加 / 与不加 /
' y; q2 g$ ^( E1 w1 Q在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
! x: q, ?7 i# u8 z  g( ]
$ j0 o/ L9 k: S" S5 j, H5 X例如" N/ A* M6 y; z: ?, M: w
3 r0 @) }' f8 P8 L/ |' z
加 /5 h0 p  F0 F/ E  l/ J/ P$ F
  1. server_name cncml.com4 ]1 Y1 T8 T/ r$ _
  2. location /data/ {9 K& ~9 {. P" P
  3. proxy_pass http://127.0.0.1/;  `- f+ t* ?- f' O. W
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html% H- O9 f; d9 |3 O4 W

( C! k+ Z- C  `: {  ^! b6 w, v不加 /( K3 U4 K3 f  V' P
  1. server_name cncml.com
    8 v9 Y4 k' N. R! k) R4 E% z0 R
  2. location /data/ {
    9 l  i4 D6 ?  W
  3. proxy_pass http://127.0.0.1;7 n) d4 I& z4 t  \* [1 `
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html' {, `5 s, p/ ]# _  d0 g
$ E  J1 S$ g8 ?9 K; N" J
游客,如果您要查看本帖隐藏内容请回复

& x  d- ?" x" @  d# V$ [+ _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 23:00 , Processed in 0.052883 second(s), 19 queries .

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