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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发9 E- _; C5 _" T1 h  N

9 x& s# r" z1 t# a( I$ K. k本文中,我们介绍Nginx如何做端口转发,还有各种转发规则/ K) s; C, H; i6 w3 L% u

, b. ^3 C/ Y: J! b4 z5 H将域名转发到本地端口
; ~, v) ]; B& @首先介绍最常用的,将域名转发到本地另一个端口上
4 E2 n1 W3 ^3 ?4 _/ R, M/ ?$ R
  1. server{
    % c2 t  N1 w) X
  2.   listen 80;
    * K7 C. O" s: m4 U: Q! h% k4 }
  3.   server_name  tomcat.cncml.com;$ b! x# {4 L% R% a! Q
  4.   index  index.php index.html index.htm;% ~8 q; F* C0 R4 p3 K

  5. 1 \8 ^- @/ Y  y' H& {' e2 G! E
  6.   location / {
    ( f1 |" t0 r" v# _7 I
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则# L) C2 j( n% V) o/ F+ ?! ], `
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    3 |9 V, w; A+ p+ {7 D' G% Y; O* k
  9.     proxy_set_header X-Real-IP $remote_addr;
    / n) A/ [' t' c* o4 B
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;. J& G4 x  V$ W0 {$ S
  11.   }
    4 h! {) w2 l( ^2 N; Z2 k, k
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
( Z0 v) p9 x( V) J* u# i+ B
! ~  u! a6 w/ B- F7 b& R4 t将域名转发到另一个域名
4 r/ V2 A2 J$ G0 M8 z
  1. server{
    9 |3 M" \+ r$ M4 w2 J: C  S
  2.   listen 80;
    2 J# A6 U2 r& q# D
  3.   server_name  baidu.cncml.com;
    * r' G/ e7 s" x. P% M0 U& Z
  4.   index  index.php index.html index.htm;
    8 T2 d2 ^9 N1 d* t

  5. ; u# a* ?/ w  _: H7 m& p
  6.   location / {
    / g( P. K% t- U- }* {
  7.     proxy_pass  http://www.baidu.com;
    0 m0 `  l4 {" s' l% R! Y
  8.     proxy_set_header Host $proxy_host;
    ( i* W) }" P$ J* m& |8 V6 W) x
  9.     proxy_set_header X-Real-IP $remote_addr;
    , ]& W$ z/ c$ j0 i
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;5 b/ X% z& o! V$ `# S0 w
  11.   }
    - j7 ^) D, [4 ^! J' J/ q/ {+ C
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
- f% [( h# n8 W9 b
  1. server{
    % Z, d+ `7 H" W& j, A% v2 S2 a8 Z3 k' _
  2.   listen 80;
    : X6 {% B) o1 A  H" R9 T$ ~( H
  3.   server_name 127.0.0.1; # 公网ip
    ! Q$ \. k$ q3 V7 {
  4.   index  index.php index.html index.htm;* J& Q, [5 L6 `% J

  5. % o% S6 C8 L6 Z
  6.   location / {0 e2 ]5 A+ v4 b/ l5 S0 b- Q2 Q
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com, \# s# G' b2 b% c
  8.     proxy_set_header Host $proxy_host;4 {0 E( J2 i9 W* G- L
  9.     proxy_set_header X-Real-IP $remote_addr;# _, L: l) G( U
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;/ ~! h! D" E# u, U
  11.   }2 M& q& H( F$ N  ?6 N: o+ t  E
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com3 {. {2 W8 [6 F+ J# Q+ z
1 K7 h+ d( B' z4 v% S! F: e* Y$ g; t
加 / 与不加 /
% R1 Q# c! p, }% ]% s1 ~在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径! \9 T! @6 g8 p

: S6 h' n  \: w% s- K例如) Y3 A4 W: O( e7 H( J
8 h- k- E4 g( W5 S# q3 E
加 /: M9 g/ k1 b4 O* u, C
  1. server_name cncml.com
    ( K% j7 d0 C( }  _  r4 q+ n
  2. location /data/ {
    / l/ Z. Y, U- U- j: F5 Z6 d* t
  3. proxy_pass http://127.0.0.1/;
    8 j' F: g6 }, D: k8 q8 g  k
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html/ Y5 j# H9 H6 v% F" `" [

" w# }/ R2 [# ]4 s4 ^不加 /4 z1 Z6 D. @& @6 ?
  1. server_name cncml.com& O! C3 t( w, T" a8 _# G  y) v
  2. location /data/ {
    3 @+ |4 }2 A2 @. {- s
  3. proxy_pass http://127.0.0.1;1 t+ h+ V$ B1 s5 q0 W& b
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
% s$ j/ h$ D: ?2 A" e0 o  Y# k/ I& a5 ]9 J# X6 g1 Y
游客,如果您要查看本帖隐藏内容请回复

! T" [7 i) {7 y8 U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 05:48 , Processed in 0.057959 second(s), 21 queries .

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