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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发" k/ h! R, }' Q" a$ w
7 V  w7 F. c" H) U) `) {1 {
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则; X* j. X; [1 @4 _$ k+ F( P
. {# R. z- |, O- D& \" ]% u- f
将域名转发到本地端口" \" W* {' p$ Q% O& T4 d% Q
首先介绍最常用的,将域名转发到本地另一个端口上
3 U# d, w$ x0 A. A6 q
  1. server{" T, Q: n3 X& L4 B- P# v/ ?* P
  2.   listen 80;7 s# z" {: j" L1 r9 {- [4 w
  3.   server_name  tomcat.cncml.com;1 Z% ?& t0 n9 Y
  4.   index  index.php index.html index.htm;
    5 x* d! e1 r3 Z7 ~

  5. ; H9 o9 f0 w" [+ \) s6 @: E3 I3 y
  6.   location / {
    : e( H" ?+ N& f9 X# S  ]
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    5 e9 P1 J4 `) M/ l& Z
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求& Y+ Q  F( x1 P( S
  9.     proxy_set_header X-Real-IP $remote_addr;
      F) R1 a! D$ Y6 l% F
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    & i/ h0 d; K* g# h( i4 n
  11.   }' ?3 q' Z# w: J1 k
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口7 y) @2 s! p- w: i8 |. c, @- [

) }  \6 H# U, U. m( N将域名转发到另一个域名; U/ H/ S5 e2 W6 a* [
  1. server{
    ! l! l& L! F, L8 _. L( f! _
  2.   listen 80;
    - }8 y' d+ c, \3 u
  3.   server_name  baidu.cncml.com;
    7 p* O; }3 M$ ?( y- z% p
  4.   index  index.php index.html index.htm;
    2 b' _/ h4 R1 l, c

  5. , [* k2 E# P1 k
  6.   location / {1 ?, q+ e, a0 E8 ]- p- e6 D2 k
  7.     proxy_pass  http://www.baidu.com;
    . v) C9 d  F2 P2 {5 g6 c7 t
  8.     proxy_set_header Host $proxy_host;
    2 J0 z9 l2 v4 E4 Y# C& i
  9.     proxy_set_header X-Real-IP $remote_addr;* m. C1 t! n% Q7 L
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    1 [9 K9 w$ G  [$ b, G9 Z* @
  11.   }
    ; e' O$ x4 M" |; l- W
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
6 X8 ~8 N% {1 g/ L& {% Z
  1. server{
    2 F; S: M  I4 K0 L* v5 r
  2.   listen 80;% d2 M; K# [1 q  ?7 A
  3.   server_name 127.0.0.1; # 公网ip0 T8 M! |! g9 [9 ^5 E3 p
  4.   index  index.php index.html index.htm;1 g# C* _7 f# o3 s- f% H
  5. + L( N9 G" o6 J0 j  c
  6.   location / {
    4 M4 u- Q" w# C
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    6 q& a7 E/ p, Z
  8.     proxy_set_header Host $proxy_host;
    1 D' S( G* w7 G6 A& u& n9 i
  9.     proxy_set_header X-Real-IP $remote_addr;
    , R" k( l: ^# r2 i
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;3 z% M1 U; c5 E) d. q
  11.   }# _" w2 J4 t% i  a
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
% {  ~1 q5 [. d  x5 \" d
% z" S" |: O4 S+ h8 G" H8 m加 / 与不加 /
: ?$ Z7 J, m* i# X1 w! ~  Z' Y, U在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径# u$ u( s6 V* J7 `0 `. i
' u1 b3 d8 w- Y4 b0 F0 S8 G" c
例如
1 d+ M+ d4 \" g, F8 r
* ]0 g$ n3 {9 l1 d  U5 r$ j' M) N加 /- Y- I! d9 v3 M9 q( q( w
  1. server_name cncml.com
    5 f) `7 Y; u3 U3 N& V; x% d$ O
  2. location /data/ {! D) I7 P% O8 m- `1 s+ |5 X
  3. proxy_pass http://127.0.0.1/;
    5 T& D  a" w/ \2 w
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
, Q6 `4 z) B2 e8 J/ _
- p8 I- H( T- h1 \9 ?不加 /# I: _( @& v6 ^1 ?1 i
  1. server_name cncml.com) i- B6 c1 k& u. n3 c0 Z9 Z# T
  2. location /data/ {+ }) c* ?. v  {2 d3 e- X: \
  3. proxy_pass http://127.0.0.1;; X0 f5 Q8 E, }( O- S* f
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
% \# `+ v7 `9 Z$ N9 ]" P! x- v" I% \: s5 C  m
游客,如果您要查看本帖隐藏内容请回复

3 a0 d$ ~2 W3 ~6 N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-5 01:13 , Processed in 0.060881 second(s), 20 queries .

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