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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
2 S3 }5 l* S1 X9 R+ L+ _3 B2 g: ^5 n. D! t5 p/ a! S# L# a% ?. e
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
  Y' a0 r; |2 D' z9 E) J; R
$ x$ i2 G0 h8 n! E, a将域名转发到本地端口1 \, o. p3 ?5 K, {
首先介绍最常用的,将域名转发到本地另一个端口上
" e, ?9 y0 F: l( D0 O' c0 [  p
  1. server{2 I& O* @! _9 Q: w9 X
  2.   listen 80;
    & b1 V. V' p) E4 G1 ]& o( _* M
  3.   server_name  tomcat.cncml.com;
    ! M, \; D" N* F3 S* k' q. J1 d
  4.   index  index.php index.html index.htm;
    . m0 h0 e* X: o& t. t8 R5 ^$ A; @) s: }

  5. ' ~& e! ^) ?0 \8 I% R5 w9 q4 ^
  6.   location / {
      I1 Z! D& `8 K2 t
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    # \9 ?0 X& V3 @6 t) l
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求% H2 e7 e5 ^8 `
  9.     proxy_set_header X-Real-IP $remote_addr;
    9 d& G  ^+ ?1 z) M( K
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ' n1 b- t4 |. q6 Y# C# Q* ^+ s
  11.   }
    ; I3 _2 k; p+ U8 N0 B4 i
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口' e6 I3 k! z1 N& x' ]8 [1 U- P
9 }0 V. Y0 i* R4 w! ~
将域名转发到另一个域名
$ h( J' O; @1 c; Z( e/ _: z
  1. server{, c* K$ j! T5 k2 c; Z  ~$ {2 d6 c
  2.   listen 80;, {& l, x% V3 }) g! ~
  3.   server_name  baidu.cncml.com;
    8 r+ C& E) ~- B3 U! L. |
  4.   index  index.php index.html index.htm;4 h# u$ j2 H6 D1 t# l- T2 `

  5. % ~# J% M3 W! |% V& Q/ h8 _
  6.   location / {% X; f' w0 t) x2 R, B  P  D5 [* _+ c
  7.     proxy_pass  http://www.baidu.com;. N) ?1 @5 u0 M. {
  8.     proxy_set_header Host $proxy_host;+ g$ n3 w# I% P$ e$ P8 z
  9.     proxy_set_header X-Real-IP $remote_addr;" [$ C  W' n3 c4 W0 f
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      ~* M1 s/ c: F8 X
  11.   }1 k1 D6 U: F( K& j# H
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名9 m5 ^7 V, z, x# t7 V
  1. server{. Q7 z+ t8 T! F$ f, w$ J' Y
  2.   listen 80;+ s9 I$ m2 @7 q& k- J) O
  3.   server_name 127.0.0.1; # 公网ip. {- M9 }8 b/ u( P2 L: J$ e
  4.   index  index.php index.html index.htm;- ?' d, q7 ~3 m* I. x" K- d
  5. # R- \  ], T( q4 m, ]& y- g
  6.   location / {
    8 h, v0 h1 X/ U( u
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com0 f7 G* {* h2 l& c& G
  8.     proxy_set_header Host $proxy_host;# U3 W% }; j1 E" `4 F
  9.     proxy_set_header X-Real-IP $remote_addr;
    ' ?* {" K" O/ D! G
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;8 [; b$ ?1 w- S9 v% h7 \+ s
  11.   }
    ' c9 P  {; d+ x
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
+ \% b9 a5 W- ~9 T& s4 V( W# f5 m
加 / 与不加 /
! `3 e2 ]' i+ D( [* r. o0 j在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径1 j+ J9 Z/ \5 q( h7 [

8 @! e* W: L5 g例如
) b% k& R% u3 L0 p1 X/ c! m9 H' f: d  K$ N; I
加 /
# \1 h1 r/ a  a+ Y7 Y8 m: B
  1. server_name cncml.com
    % {7 R6 D$ g( Y  K9 S
  2. location /data/ {
    2 p0 k4 w  `- I" J9 k: H
  3. proxy_pass http://127.0.0.1/;$ @$ r6 O) _) r/ T" Q* U& A! N% j
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
2 k0 G) {( n# y6 V# r" }0 a, G. a' `1 q6 q1 s
不加 /
4 M% C* a8 l, f! v6 [9 w; k
  1. server_name cncml.com
    6 x$ ^7 J% m; j/ X! W) r
  2. location /data/ {% |$ O# M. B4 J0 H# a
  3. proxy_pass http://127.0.0.1;/ N- Z" e3 N" B7 m* h. ]
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html8 }2 |5 S' D  R% y! w

8 n* n/ f( @0 o4 W- W
游客,如果您要查看本帖隐藏内容请回复

3 ^5 ]( ?1 R/ u) U2 B! O, Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:08 , Processed in 0.065796 second(s), 23 queries .

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