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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发- Z4 C" ?5 y5 J
7 e+ \' n6 r; B+ O
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
$ W- j) y0 C4 H; D8 `
1 r5 r. t! N6 a$ x0 R将域名转发到本地端口
+ X+ v( g# v9 _; l* J; p首先介绍最常用的,将域名转发到本地另一个端口上
1 ~' m( J$ |( M5 O( B. C5 ?
  1. server{' l7 G# G& [/ U6 ]0 b8 C. g
  2.   listen 80;
    : L! Z9 r. k$ Y# r! E9 S
  3.   server_name  tomcat.cncml.com;
    - N2 y0 [' Y  b7 Q
  4.   index  index.php index.html index.htm;
    ( ^: v- M, w" x* F- c

  5. . Q% j/ o7 q: j$ Y% [' M
  6.   location / {0 a2 A/ ~6 @- L, ^7 P& I
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则' D+ g! S1 e: g- P0 g7 o. T# @
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    0 G7 w9 V. o* @. I! d
  9.     proxy_set_header X-Real-IP $remote_addr;
    ' Z) {" E8 Z3 j6 w7 d
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ) o& X% L  |3 Z* n$ N! T; N# Q
  11.   }
    , J- @4 b! f% u; _  i
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
$ Q' V3 `1 N; a( V! l
4 c5 T  t3 \: n将域名转发到另一个域名0 b# c! o% T$ v7 D0 K
  1. server{# f/ T+ U9 A/ n  d4 Q4 D
  2.   listen 80;" t5 u7 P/ z0 E) ]
  3.   server_name  baidu.cncml.com;/ q) K: {$ {; t
  4.   index  index.php index.html index.htm;
    1 h* m7 i% K- W& _
  5. ; t* m% M- L( [
  6.   location / {
    % S9 ]5 s. J% }3 b; Z/ T
  7.     proxy_pass  http://www.baidu.com;
    * N* a- l; O% B5 v9 p4 h
  8.     proxy_set_header Host $proxy_host;
    / W0 [# q. G7 n3 d
  9.     proxy_set_header X-Real-IP $remote_addr;' k$ e" m  p& X# B! l& I
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # j5 j, @1 e. ]- f; L+ I$ R
  11.   }. f7 ^( Q+ @" x
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
/ W8 F/ {% J8 ~7 v
  1. server{# E1 U  L3 J; ?* k; U
  2.   listen 80;2 U& X  q" X7 E* m2 \  c' `
  3.   server_name 127.0.0.1; # 公网ip
    ' ~0 q% r% [+ b1 g% N+ i
  4.   index  index.php index.html index.htm;
    ! E6 {% j+ ]) g  e1 [/ P) V

  5. 8 h  ]3 y5 r+ z/ T3 d) m
  6.   location / {6 O. Q, N4 m) y( W, K( x- o
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com5 ?4 @! }, A" X* @  T6 \  M. H7 @
  8.     proxy_set_header Host $proxy_host;
    5 x- W4 U( A# t8 [8 C
  9.     proxy_set_header X-Real-IP $remote_addr;0 M; i" c) K# L% e' l; |$ P$ v2 e/ x
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ! Z9 H- Q( P2 j6 l
  11.   }$ N6 v5 p0 v! M% E: F' I+ j
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com9 N4 p9 F6 J* }% b1 o+ Y8 |& `7 K
+ M: G+ p6 b/ L7 \7 [$ J3 [, W
加 / 与不加 /
+ _3 ]6 I$ \% ^7 j8 d2 Z在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
" }' X* q* D' t; [. V+ D" {
% V5 C; [$ d! \. L. ^. b例如5 G$ l7 \( u, U9 k. d4 s5 e
( N0 c0 z. {8 ~& T. f
加 /
9 Z3 B8 \) z2 _5 M; [4 R, D
  1. server_name cncml.com
    % P0 A, h# f$ ^( ~, ~. ]
  2. location /data/ {6 H8 X- Q$ j* [  h8 b5 [" X
  3. proxy_pass http://127.0.0.1/;
    ' V% e5 D6 P! T2 k6 Z: \, i
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
: R* ?: L+ I6 N  d6 P% _9 q: `* w  b$ P- J1 M
不加 /: D; K% c" t) h$ H9 m6 v. _9 I- B
  1. server_name cncml.com5 C5 O9 ]4 v/ Y/ T
  2. location /data/ {
    ; c; e9 J4 O! Y$ K8 {4 k
  3. proxy_pass http://127.0.0.1;1 L! E3 k( X3 w8 s
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
( x% ]" l% H& X+ p" s; |
( k  i3 A3 N2 U4 ]5 ~% z; G5 g* B" j6 Z8 x
游客,如果您要查看本帖隐藏内容请回复
! S7 `3 c3 y) X7 K8 Q  l0 u/ w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-3 13:48 , Processed in 0.115208 second(s), 19 queries .

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