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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
; K3 P9 |( i5 t- _9 P! J8 Y2 `0 z  |( F. y
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
, t7 I$ _$ x$ i' S! ]$ }4 O+ s6 _( s$ B- W2 d' V
将域名转发到本地端口
; ?+ v2 ]3 k- v2 L/ y: J/ g, q首先介绍最常用的,将域名转发到本地另一个端口上
& G& T& x5 j3 d. f) i, [
  1. server{  r( m: a2 B( G) Z
  2.   listen 80;
    3 q7 p9 g& J3 ~3 X7 {
  3.   server_name  tomcat.cncml.com;. P# ?7 B1 K* w3 C+ o
  4.   index  index.php index.html index.htm;
    + P* ~$ p+ E* [& ~# w& |! q7 ]

  5.   e  k, J4 c6 L' K( F* Y& q
  6.   location / {6 b: h1 C( n# G1 d: Y( ~
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则9 S1 \( E$ s" T* q" p/ d' Q
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求7 O1 ]; }9 ?' u2 @/ }- ~% a: l- l( i
  9.     proxy_set_header X-Real-IP $remote_addr;* B) F+ r4 D" ~0 P, j
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;/ y! l/ ?3 o0 S3 A# x
  11.   }" w9 r6 `7 R* ^" Q0 a( d' t
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口& T9 T  M# J1 _% `, g
0 h" p5 Z( `. N5 L
将域名转发到另一个域名  X! n) L# |+ [5 F) o9 j9 z6 K
  1. server{: f- @0 Y3 h1 d' x9 Q# N
  2.   listen 80;
    & T( |* B9 b4 d+ B6 f0 {4 K, k
  3.   server_name  baidu.cncml.com;' l+ U8 f2 x# `7 ]/ x! [, o+ M; w- \
  4.   index  index.php index.html index.htm;- {- Y2 A1 O* L
  5. - W6 x1 _9 q# D) A6 ]+ T
  6.   location / {' Z" ^9 l$ R* z2 G* l
  7.     proxy_pass  http://www.baidu.com;
    1 M$ M; c! D/ m5 t. V
  8.     proxy_set_header Host $proxy_host;
    7 b/ }4 Y0 X& @
  9.     proxy_set_header X-Real-IP $remote_addr;! k0 `# \6 Y5 _3 c1 Z
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;" u0 y. r% x. |3 m8 L' u
  11.   }
    7 ^9 j# B" X2 v) U
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
" x# n# J% Y: x9 M2 k
  1. server{
    ( v; {  |8 v6 T3 m# X8 D' n
  2.   listen 80;. o" l3 ~0 v' ~+ _' U* I' Y! S
  3.   server_name 127.0.0.1; # 公网ip1 @9 T+ C' w' H/ I
  4.   index  index.php index.html index.htm;! E; q% N% ~! l* j
  5. % F* e0 _3 a3 `8 P4 d$ W- H
  6.   location / {
    ' r& D1 n$ c+ ~# w3 J& v
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com! A3 l& r3 a/ _2 G" n7 f/ q  m
  8.     proxy_set_header Host $proxy_host;; ~+ M# O3 {  o" h8 a
  9.     proxy_set_header X-Real-IP $remote_addr;
    : |& T3 v& W5 W; `3 i8 g8 N
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;. K- D) c$ z$ N" Q
  11.   }/ p) j- U% E- i) @$ O( ^
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com( Q7 p) b" X3 p, }
- o9 \6 C, ]9 X+ q$ |
加 / 与不加 /7 m0 t4 F2 U: v5 ~1 [7 f
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径, K! ]. v  U1 _& z1 k1 i' P
* G2 ?8 y% ]& H6 n: g3 f
例如
9 Y. g3 J1 p, c7 \% m- i4 ]
- ^1 H- U8 j" z% C5 z加 /
6 J* W, |# v1 \+ o4 ~
  1. server_name cncml.com
    6 C$ O+ L/ T9 |8 U- L0 d0 ]
  2. location /data/ {% I. X1 ?: B& p6 C0 B! A8 R
  3. proxy_pass http://127.0.0.1/;+ g, v9 a8 \$ U0 S2 q+ k5 [* |, ~
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html1 a, r% n0 S+ ?. h

7 b* _& [4 Z; B* ~5 r不加 /) \; S% p- {; O. S8 I: H: K# F
  1. server_name cncml.com
    ) r3 ~8 J2 f8 R& d* Q  \
  2. location /data/ {3 B2 Q5 R- a' M
  3. proxy_pass http://127.0.0.1;! _4 q4 D. G6 M# g  P6 X% P; }
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html; A% c7 g% {" m" y3 w# a# J

# i* E8 G6 A; b7 s9 Y6 V* P* J
游客,如果您要查看本帖隐藏内容请回复

3 E- S0 v% R) E( Y" V' R4 q1 s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 14:43 , Processed in 0.113112 second(s), 20 queries .

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