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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
+ I" q9 s$ x5 ^
4 x/ d. v; h4 r7 p, A# g本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
4 U( Z+ q3 D5 ?* {0 O. l4 c  L2 Y' s- Y# `  K$ z
将域名转发到本地端口
0 o* D7 G& v+ ?4 [" R6 ^首先介绍最常用的,将域名转发到本地另一个端口上, |3 p: y% y* Q5 }1 M0 h
  1. server{# l9 }. A6 B6 ^; r  Z
  2.   listen 80;8 S5 X! w( o( v' q. h
  3.   server_name  tomcat.cncml.com;
    ; e  B* o* |) T, u& M
  4.   index  index.php index.html index.htm;
    ( q! Z9 D- v; i# ^2 ]0 k
  5. 4 O" g: Z, N  c3 V+ E, H$ a) Y
  6.   location / {
    9 v' R: f1 Z) {5 M$ e# y% Q
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则# D8 b" Y8 A$ N7 @4 r) I' P
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    * a* q- w2 U0 g' M/ h/ T
  9.     proxy_set_header X-Real-IP $remote_addr;  m& f( s3 K/ L  {! s
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # ]1 `/ S! s. N# T
  11.   }% A. b) t6 s" z, z& C) o
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
/ A" J$ Q6 X1 c9 e. L3 {' z0 j! e$ W; R* Y/ R
将域名转发到另一个域名) A0 ^, c  |  _. q/ P8 `
  1. server{
    1 G3 K7 ^" X9 N+ ]* u8 _* A' Z
  2.   listen 80;8 C9 _% R8 L6 o8 ?/ n6 n
  3.   server_name  baidu.cncml.com;
    3 I; A8 n' l# Q8 a5 d2 Y5 r
  4.   index  index.php index.html index.htm;
    7 Z1 M* H% y+ V6 K# y% [, u
  5. . \: b8 |( Z4 C4 p5 D# l. \% A
  6.   location / {2 u% ^! I' S& c$ h$ e/ c
  7.     proxy_pass  http://www.baidu.com;
    $ n, I" Z' [" j
  8.     proxy_set_header Host $proxy_host;8 F% ]" h: j: u0 y5 x8 _5 D
  9.     proxy_set_header X-Real-IP $remote_addr;1 Y- j: k3 [' y* m6 Y
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;( v* S. z8 @* G- h+ C
  11.   }
    ! }. k/ z* b$ M/ X- e5 q1 d8 z7 k% w
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
9 J' S3 T6 X" D5 Y8 Y- o# m% m, `
  1. server{
    ' ~0 w( O' z3 Y' P  ~3 F8 D, Z
  2.   listen 80;. \! g, ^, K( ?
  3.   server_name 127.0.0.1; # 公网ip$ E% N( u: S8 [
  4.   index  index.php index.html index.htm;( `1 T' Y+ e$ s

  5. # i# o3 Z. C  i
  6.   location / {
    , L* v. N0 q2 ?* y/ n
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com1 e4 s0 O' f% O. ]& u  U
  8.     proxy_set_header Host $proxy_host;+ _' @  L  F) {
  9.     proxy_set_header X-Real-IP $remote_addr;
    8 B, @4 h3 U1 X* |
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;+ N* \% r" M3 Z3 r9 o- ]
  11.   }7 m9 n* T& b# N' g: `$ d7 p
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com/ D. A# ]1 {( y; F
& M  t1 d5 S2 ~' B8 ?3 I6 I1 N
加 / 与不加 /5 K- I1 P; |1 |8 ?. a
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径* z" q3 m  ^' O6 C
( F" t2 x+ F3 c6 T2 H, E
例如7 `  M- c- W" p% ?: ~2 y

. Y1 y" p( T: N% h* p- V3 a8 o加 // j4 \( r9 l' B/ |" L+ W) c' W
  1. server_name cncml.com
    6 t, ^/ p) j) I$ p1 {5 D$ C5 _' P
  2. location /data/ {, O. @" r, t- n
  3. proxy_pass http://127.0.0.1/;! Y  B8 M# l1 K  N5 w
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
2 ]. R' I$ n) a0 }7 y3 G! N  o
/ _# T, H8 h5 S' p3 j不加 /
9 s8 [8 H. d; ^( U, {; R
  1. server_name cncml.com
    7 {3 L2 H1 t) `6 o' \! a, K
  2. location /data/ {
    1 @* S3 ]0 m' J" \' @
  3. proxy_pass http://127.0.0.1;
    ( v" b" v0 [' n  y; r! c0 x( u4 D
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html, M' b! e0 D+ @/ c& K
, ]( o) o) \3 V* I0 ], t
游客,如果您要查看本帖隐藏内容请回复

2 |7 U- i4 q, F6 Y9 u; E9 M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-20 16:46 , Processed in 0.104535 second(s), 20 queries .

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