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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发) D  D% ^+ n, I. b* P8 H  k
2 x# `5 U3 L1 G& F1 T; b
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
2 Z4 z: \, [9 ?/ M  p. q  J& b$ a% G- R$ S: J) f$ r
将域名转发到本地端口
( `9 \' [6 w* k3 E1 u/ a6 u' Q首先介绍最常用的,将域名转发到本地另一个端口上
9 r. l. ]2 u6 m0 {7 [+ P
  1. server{
    $ p+ r- w2 K. }! f: W4 u
  2.   listen 80;
    5 h$ p' z( K0 x4 H
  3.   server_name  tomcat.cncml.com;
    , x* W  u! P" W- ^' Y4 _
  4.   index  index.php index.html index.htm;
    / v* V1 ]7 G; ^( R/ Q
  5. 1 @! E+ B" \! v# a4 u
  6.   location / {- k6 {$ \: w# R9 q. y2 v5 E
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    " n" A) C! F3 z7 M% L3 y% y) |; J- d
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求: v, N0 [1 R# M% J. A% p
  9.     proxy_set_header X-Real-IP $remote_addr;
    " }- I- E5 }/ \
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;' Q6 S! g# P; c5 Y& d
  11.   }! N" `* _2 {7 e
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
3 W  K  ~/ x8 Q0 Z# ]4 ?0 G1 H  V$ y8 s9 Y$ J) J
将域名转发到另一个域名$ e5 Q( B4 T* X: S( T
  1. server{2 }8 A5 {8 K; U8 ]/ m, z+ w
  2.   listen 80;3 g- c" a7 {4 g! ?! R5 T$ E( w# ?
  3.   server_name  baidu.cncml.com;
    1 I9 T; s4 o' \9 [  V
  4.   index  index.php index.html index.htm;
    , z$ L7 P3 g! I( Y: w8 I, I5 P; z! E
  5. 9 j8 b- a9 g6 U- G+ {0 c0 i
  6.   location / {# [8 I/ W- d' b3 H0 @
  7.     proxy_pass  http://www.baidu.com;* f# R- F4 o# H0 W: ]0 D
  8.     proxy_set_header Host $proxy_host;3 N1 Z) \+ a! X0 q. r" Y
  9.     proxy_set_header X-Real-IP $remote_addr;
    2 ^" X$ _8 z2 r
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    9 f! |4 p# ?* x" K; e* w. e% e
  11.   }, S# j( u; z4 X: F
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
8 i7 N0 `4 z9 T" V; O+ k# W5 y3 x: Q
  1. server{" l1 P! {7 D( T, R4 e7 T& ~
  2.   listen 80;
    6 J  J9 O5 W  ]8 ~9 O& _
  3.   server_name 127.0.0.1; # 公网ip
    3 U. Y& L/ l  u0 ?
  4.   index  index.php index.html index.htm;' ]% h5 L; }, v6 }7 t. h
  5. ' R# u' |2 }8 K* o# t9 {' H
  6.   location / {
    # M/ p& Z$ d  g3 P: @
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    / f7 R" I; i1 ~/ A1 }
  8.     proxy_set_header Host $proxy_host;
    0 b  J1 P% ?- s
  9.     proxy_set_header X-Real-IP $remote_addr;7 `1 ^# A) _+ u5 s
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    - S2 R" P. E$ P! X; `7 j0 B: U
  11.   }/ D, u& E8 N. |! u7 r, F8 V$ J
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
6 `. A. o& G" Y, {0 W3 M1 N
& w5 A! [2 P5 D9 H" z加 / 与不加 /
. ~0 x5 `; E& g" H在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
( _. j# O; I* N' b6 _) w$ _% i9 S/ `
. H; w/ h' Q5 |  x例如' p' X) z: `, M7 Y

" o  M$ D2 q; s加 /  C1 F/ Y* b2 p9 C, U: ^
  1. server_name cncml.com8 B2 I# `4 }! b) l
  2. location /data/ {7 t7 B; g' ?# m
  3. proxy_pass http://127.0.0.1/;
      F6 }7 a: U% v, m) ]
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html/ H! F. m8 A$ b0 [  ?
) E7 Z$ z/ n; h$ I7 c3 F
不加 /& P/ Y9 c/ C' G( o. M, u+ n% w
  1. server_name cncml.com" B. k9 W+ i+ e- C! j$ V
  2. location /data/ {
    $ ~1 Y  ^0 F" H# Y! h8 k& y
  3. proxy_pass http://127.0.0.1;
    1 D, T. X; b% `  m' I. v
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
* G& I  n; n! Z, W" }& v/ D3 A7 [
游客,如果您要查看本帖隐藏内容请回复
! r+ u8 \  `- I( y0 E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-4-27 21:49 , Processed in 0.109803 second(s), 21 queries .

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