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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
2 T( R) e; v9 T, c3 Y0 q) T$ d: j$ l7 p  d) _/ \4 R% v' n
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则6 [7 a$ V9 [' v$ @

  y3 {. U( B+ U6 Z7 S9 H将域名转发到本地端口
$ B7 t+ P( a) L- B6 j' B- s2 {! D首先介绍最常用的,将域名转发到本地另一个端口上
" f$ ~: W( F7 @6 t; S: ~
  1. server{- |/ r8 K0 C2 U& P; y8 E. L$ s; e
  2.   listen 80;/ W4 o7 I! Q7 ]5 c8 _
  3.   server_name  tomcat.cncml.com;
    9 w8 n8 Z* f! l
  4.   index  index.php index.html index.htm;. |. _7 o# p/ u# k' F# J) p8 z

  5. ' C2 m% g8 Q  @
  6.   location / {5 ?* r% O, h) O4 ^0 @
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    8 e- I$ e+ z6 N1 c& v, Z
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求2 [% e7 s, E, x0 w. {% e
  9.     proxy_set_header X-Real-IP $remote_addr;
    - q6 h! i# z' h* @4 h* l7 c
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;2 _8 X2 F% z, d0 h
  11.   }
    2 A8 ?$ k* {6 j: U$ F
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
3 O! A* k$ [1 i* p3 c
5 q8 |$ V4 n* N: f7 S9 f( N将域名转发到另一个域名! G0 \) F8 n1 w# x, ?
  1. server{8 v* C7 R' z7 p0 ?) e
  2.   listen 80;
    ( U4 J% _) r) v
  3.   server_name  baidu.cncml.com;
    0 x& ?/ Z2 R- c% |9 F
  4.   index  index.php index.html index.htm;
    * d5 @( `7 R6 U, r# s
  5. " M- B: U* P% U2 `) ~7 p
  6.   location / {
    4 y3 b- }. s0 R( B6 E" m
  7.     proxy_pass  http://www.baidu.com;/ L5 I, Q, j' }0 \* R
  8.     proxy_set_header Host $proxy_host;3 m5 o8 k1 k4 ?
  9.     proxy_set_header X-Real-IP $remote_addr;! ^' y- H& t+ h. U
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    0 r9 q9 z$ A; R5 r
  11.   }
    , L  a# F) F' I# D, M- X/ B4 A
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
& j% _- m0 G- p* H0 M& E
  1. server{
    1 J  }+ i9 I/ a5 Q4 w: [
  2.   listen 80;! e1 |) s' o3 b) l
  3.   server_name 127.0.0.1; # 公网ip. G$ z/ X" \# L8 f" n2 y
  4.   index  index.php index.html index.htm;" S  Q& W& o( W7 r6 w+ I6 y' m6 A

  5. ( Z+ ?. a% ]; y% W9 f! H
  6.   location / {
    ( G; A" q4 d' E2 A1 s9 a0 ?. o) d
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    6 s& j7 M1 q* |: Y0 Y% x
  8.     proxy_set_header Host $proxy_host;( u1 [1 L# e# m; }$ ^& h# w
  9.     proxy_set_header X-Real-IP $remote_addr;
    ; Q! [$ U. x( B* N
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# J2 q; f% Z$ C: Z  I/ n: }
  11.   }* d9 e5 V  m0 ]/ {
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
" s7 O1 T3 G3 q! R& B4 c* `- X, j. ~$ q8 Q/ ?/ U5 Z
加 / 与不加 /- ]+ O8 N* G+ v4 I- H
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
, e; y+ f/ `; l- J4 M4 b2 F  \  n$ l/ {2 S" b
例如  r' o7 `: q3 l  O8 k7 {
$ E) M1 {* r; j0 `
加 /
4 T( H5 U% X5 C+ v. a
  1. server_name cncml.com) D+ }' |4 Z+ e5 G' i2 g9 G
  2. location /data/ {
    $ _% W- W. u6 K" P1 L% X2 K
  3. proxy_pass http://127.0.0.1/;
    8 B/ x9 ?: T& ~2 y
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
9 k: @' K. P% R4 V
4 Z! c* u, S/ o7 [) A# Z( u: @, v不加 /
+ G7 I1 ~" X9 W' T% |( V+ g) o
  1. server_name cncml.com
    - b9 b: |8 f* T; j$ g4 |7 M
  2. location /data/ {
      Z2 q: i8 _8 a; p. \
  3. proxy_pass http://127.0.0.1;* Q  S  o, j3 E5 I# K
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
$ A9 f; V) v" y+ W7 p; ~* u* O! X  ^2 }7 i8 p9 \* \
游客,如果您要查看本帖隐藏内容请回复
" q% U  _, S/ f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 10:59 , Processed in 0.047233 second(s), 20 queries .

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