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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
  B1 ~! I. u! G: L. y4 g* X9 E4 n& M
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
+ {' M8 H" h4 `! u& v* W
& A, X# J$ n* E) E# Y将域名转发到本地端口9 u# y, z5 U" H4 i8 F
首先介绍最常用的,将域名转发到本地另一个端口上
& X: i& V  `$ y- O: a# h
  1. server{  i; H( S! }' ~5 q
  2.   listen 80;
    & g* h, V3 I! E- g3 O
  3.   server_name  tomcat.cncml.com;
    / B9 G" K' R# c
  4.   index  index.php index.html index.htm;
    . s( ~: @) I: n2 i3 S2 L
  5. : f9 l! R8 m7 Y& x  M9 C) P$ `3 B
  6.   location / {
    " L# ]  Z, C& A: _( @1 X0 J) B5 @
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则8 `: m- R8 k# k) g
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求2 l+ z$ X" w5 E9 G6 j! k1 m% F3 u7 r
  9.     proxy_set_header X-Real-IP $remote_addr;
    5 k& T9 w1 B9 p* o; K0 T% h
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;% H  A$ q$ H. s, T/ Z# w8 K
  11.   }
    ' y8 y0 J8 v& U& A
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口1 i# M/ B& L5 L, W8 b% p: O6 L/ K

, s* P: d) }; }) M2 L, ^/ h! V将域名转发到另一个域名
! y( c6 B, @% Y3 [$ J; O7 w9 e% n
  1. server{  C5 m3 H& n5 v
  2.   listen 80;
      g: L/ y2 V4 Y$ ~6 f
  3.   server_name  baidu.cncml.com;9 A9 Z4 Z9 r! }7 \/ e( E- Q
  4.   index  index.php index.html index.htm;
    / U# j& B, O( Y6 I

  5. % g$ H8 Q: g7 [! v- Q9 Q$ a2 `& K
  6.   location / {4 _* H* m- o. Q6 O0 ]& n* K
  7.     proxy_pass  http://www.baidu.com;5 _7 ]" c( t; T# u4 {7 f: E
  8.     proxy_set_header Host $proxy_host;* [- n, p. K) v0 a, l! L
  9.     proxy_set_header X-Real-IP $remote_addr;. H. {' [# V% d7 m
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    * I- o/ g, J1 K  R
  11.   }6 N6 u8 r  i6 ]8 h8 v4 h
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
; t2 U% ]/ Q/ A: |* [& R
  1. server{$ [# A4 S- L& S' n
  2.   listen 80;( y+ X4 P2 R: S0 U% J& K3 j
  3.   server_name 127.0.0.1; # 公网ip# ^& k9 m! G6 o& @# z: k& v! a
  4.   index  index.php index.html index.htm;! b7 s  B  w$ X9 [, k

  5. ) D2 b& @. \/ Q  ]7 a8 y9 t1 ^
  6.   location / {
    7 r: r# t% z2 V$ f4 m6 b
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com" h5 Z5 }2 z% h: \4 N7 D6 }
  8.     proxy_set_header Host $proxy_host;( L$ u' S0 M; {' _% K2 G8 l5 o
  9.     proxy_set_header X-Real-IP $remote_addr;" Z# U! q- Q5 {8 V! p
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;1 |* }; @0 o9 r6 {0 ?
  11.   }7 a% o6 ^( X5 v
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com1 u3 Q2 o6 ^- P' i4 W

& m5 e0 p' Z: O3 V# k加 / 与不加 /# m  l+ i2 h2 n
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径; g" [9 [" C  `9 ~. p

6 I+ L4 Y2 P: Y+ r例如! m3 {; w& O+ Z" c/ ]2 d0 |
& R8 o7 u8 W4 ^+ \0 q# _9 O
加 /9 D3 @  B, n6 @8 |
  1. server_name cncml.com
    ) M/ l6 Q2 ~- P/ L6 Q
  2. location /data/ {4 |# I" s/ W$ k! H* D6 V% M
  3. proxy_pass http://127.0.0.1/;
    3 \- }$ Q1 ~! v5 a- v) J! K6 {: [
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
$ ^  M: }3 n+ D# @! g8 Y( Y/ X" S8 p' D, [" _0 Y8 `
不加 /! a5 ?- V6 a* ?, Z) Q0 v
  1. server_name cncml.com
    8 s7 V- o* y/ P9 {4 a( H
  2. location /data/ {* O" @; y6 ~- I8 [, z
  3. proxy_pass http://127.0.0.1;9 r! ?: A& p* r+ }
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
; p& V1 D  @: N  E' \) A2 S- j2 i  k
6 v: Q3 A. M2 `; `) g
游客,如果您要查看本帖隐藏内容请回复

9 ]* D0 j) ]- H% i& |6 U2 _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 18:23 , Processed in 0.074960 second(s), 20 queries .

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