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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发- E2 K: ?$ r1 J- {* F1 b

) w. G. }$ X4 A1 m4 N! s" T! s本文中,我们介绍Nginx如何做端口转发,还有各种转发规则( R* y. Q: G/ w, Q3 z6 j0 q3 N& U
( t' P: Z) \8 J# b# t
将域名转发到本地端口
+ y9 W& d/ e4 H3 G' i- b首先介绍最常用的,将域名转发到本地另一个端口上  M) y& d# d+ Q6 I
  1. server{5 c4 k; U$ y, O, J$ t+ z) @2 o
  2.   listen 80;! V$ S( Q; F" G4 q
  3.   server_name  tomcat.cncml.com;( l# C1 [) b/ i; J+ i
  4.   index  index.php index.html index.htm;
    8 L' q$ D! L; @; p

  5. ' N6 k8 L8 @7 [$ H! ]  u5 B  _- C
  6.   location / {
    & [6 U/ @; Z$ Y0 r/ \& Z& [
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    : b0 R& r8 t3 ^2 P7 d8 j9 V
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求& X4 M) Y8 j- K  x8 z5 \+ |7 k- j
  9.     proxy_set_header X-Real-IP $remote_addr;: }9 ~4 d8 v3 t- Z$ L0 I
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;6 I) D& Z6 o# ^) t+ k
  11.   }
    0 ?* U& _% R8 F* @& u
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口  f4 {2 u9 ~5 I5 d; ?3 I; ^

/ t" d0 ], w7 ]将域名转发到另一个域名
1 `: T1 o( Z/ W- P
  1. server{
    ! d8 d1 p4 p) g6 m
  2.   listen 80;
    ! q7 n5 M1 q& u( S. Y$ E1 f! q
  3.   server_name  baidu.cncml.com;3 ~' p- d! E% G' g. v7 ^  f
  4.   index  index.php index.html index.htm;0 ~. {2 ?) n: ], e; e6 f- D# k

  5. " i0 T7 I+ d0 O" I
  6.   location / {3 f( Q& `; f" e* H' j) j, O
  7.     proxy_pass  http://www.baidu.com;
    - u+ X. x2 O* i6 [& y7 J' X% e
  8.     proxy_set_header Host $proxy_host;
    " s2 q4 e* l; m3 v) F& k
  9.     proxy_set_header X-Real-IP $remote_addr;
    5 I8 V- |8 K6 I) g. |- [
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;, H2 ~8 F1 L5 R' h+ w& y
  11.   }) E' C5 {8 e3 n3 V
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
7 {6 N7 v0 j0 o: d
  1. server{4 E, q, a7 V$ l, L
  2.   listen 80;
    ) B4 t) a! O9 w, J% D* T
  3.   server_name 127.0.0.1; # 公网ip; o" `: L- N0 ~7 S: b" i
  4.   index  index.php index.html index.htm;
    ' Q4 m4 U$ N/ @8 @: l" `$ ?: t
  5. & F% G4 G, Y4 I- W% |5 c5 Q# o
  6.   location / {
    ; i( w* B+ v: z. O. y
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    , n8 V+ [) z4 j! C
  8.     proxy_set_header Host $proxy_host;
    7 `: Z0 ]5 ]! n
  9.     proxy_set_header X-Real-IP $remote_addr;6 E) t7 t, P! d
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    : e+ R2 F6 l" ^4 J
  11.   }: }: I7 d, m" M" f6 m: V
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
9 ~+ W1 x4 i, u- G: O7 a- G/ h+ u; O5 j/ V, A
加 / 与不加 /1 ]  ]0 l$ w& i7 d8 S7 e) c
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
$ i" M& q9 [4 H$ S. f- V
" x: B- T: X: j% k! G例如& q9 m- ]$ |: O, k% ^

4 H& G, R% {3 y# u加 /
8 ]. R3 @, I% X! G' |; ~
  1. server_name cncml.com
    ; o( e8 t) ]" q7 i
  2. location /data/ {
    % a6 v2 Z0 w$ D% r* n
  3. proxy_pass http://127.0.0.1/;9 V1 k5 X. m7 ^. e
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
2 I, w7 m/ H, R( r  _6 i5 `1 `" y' M: A) J9 P3 j
不加 /* ]5 c' g! H2 @) U( `
  1. server_name cncml.com
    9 @4 t+ H6 }7 n: c: g; E$ s
  2. location /data/ {4 W) @4 p0 O6 `  b# i' N
  3. proxy_pass http://127.0.0.1;+ R5 T; h5 k4 F8 \+ c/ l! t
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
% Q2 h5 M$ I# c' p& k" j9 y% i$ m( y" z! q! D5 T
游客,如果您要查看本帖隐藏内容请回复

& K/ R0 k1 L6 v$ ~4 G% ]; G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 19:38 , Processed in 0.053157 second(s), 20 queries .

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