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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
) [$ u. a( i% \0 W9 B  o2 U4 c+ B4 F& A- |9 x9 r9 h
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
4 \& a3 ]! q4 J/ b
9 L8 O( c+ g- O+ M将域名转发到本地端口
! R  c+ ~- F2 \3 |& _0 h首先介绍最常用的,将域名转发到本地另一个端口上& t/ A0 X4 R' C  {) m. i+ I; N) x
  1. server{
    0 z& m7 F. ], p* t( U0 ~- m
  2.   listen 80;
    2 H  C& f& D, x, M+ W& W% @1 c
  3.   server_name  tomcat.cncml.com;
    + p7 A  T0 [7 W, r, h+ E
  4.   index  index.php index.html index.htm;. W/ [( ?- G( `

  5. " _! F  R1 O3 N! z8 J
  6.   location / {* n" z7 r, |% ?4 J6 x" M
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则/ u, s3 W+ E9 m7 |( \* ^) N. I
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求! a! p& k; M7 O' v/ v4 N1 f
  9.     proxy_set_header X-Real-IP $remote_addr;
      c7 j/ P: P! E& S+ q9 E3 {
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    7 [+ ^$ D2 O/ ~+ U5 {
  11.   }
    0 M/ L) d# p7 S( c+ K
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
1 W5 Y* X  L* C* T9 K1 [
( `$ G7 D8 c- z% |: O将域名转发到另一个域名  x; F: f- `. D9 Y( H
  1. server{
    : [& b& T2 J6 v
  2.   listen 80;$ P6 \1 o! T, \: T
  3.   server_name  baidu.cncml.com;
    , N# ^4 j" n0 [
  4.   index  index.php index.html index.htm;* I% b9 R( V9 R  H7 T& f
  5. + Q: j2 m2 j9 Q8 v( v
  6.   location / {
    ; h6 M' x/ W9 N9 e2 G
  7.     proxy_pass  http://www.baidu.com;6 b$ Z2 D% T0 @% k
  8.     proxy_set_header Host $proxy_host;: s3 x7 J3 K8 X! M3 R
  9.     proxy_set_header X-Real-IP $remote_addr;  F$ v3 L) o6 C9 K0 z. ?
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    7 ]# \1 N, j" u  e- G3 H( R
  11.   }
      V# L6 V' A) v9 y  l7 r
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
6 s8 `: ^! m0 {
  1. server{
    ) g5 _4 C% @4 M- P! G/ I2 j9 V; S
  2.   listen 80;# i) B8 b6 K( A+ q% T+ A) Y% z5 u
  3.   server_name 127.0.0.1; # 公网ip9 Y8 A2 ]& w7 Z2 K" d
  4.   index  index.php index.html index.htm;
    + V$ j* _* F9 m+ s. ^8 y) S, L
  5. " Z/ v0 S- h3 i3 v* Y
  6.   location / {
    3 u2 V& i& K8 K0 V7 d# {* a2 t
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com' `3 z( c& K( a, W4 r) c4 V
  8.     proxy_set_header Host $proxy_host;. e$ g" l) C7 p3 O" Q; T
  9.     proxy_set_header X-Real-IP $remote_addr;
    , g4 z% J% N8 r% ]
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;! j- s* b7 w: u* R2 P: f! C8 t% N
  11.   }
    8 @* d$ Y$ c6 k  Y' b; O* z. B  I
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
' d" r0 X$ x' y) F, Z' T  w9 ~4 ~6 G/ S8 g
加 / 与不加 /
5 p2 y) }( c$ Q( ~- k2 n/ X在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
# K2 e  K- O- c+ p
: v! H; y4 L0 j& _例如: b5 Z- n2 m9 c* A8 P

6 y, F* _( N: o" U3 f) H加 /7 W5 g' s  ~7 K* F$ N' G: O# s7 u
  1. server_name cncml.com
    & r" Q1 V) \3 F- V7 y0 N( t
  2. location /data/ {  r0 h+ N  u; m3 k) ^1 X7 A
  3. proxy_pass http://127.0.0.1/;
    . e' o/ c8 @% D/ {
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html% H, U3 D' ~5 ^

6 k4 s* O  `" m- B不加 /  [$ U1 x. Q/ O0 B$ n# \( R
  1. server_name cncml.com) L' D& L9 E! y- U
  2. location /data/ {
    0 Y6 A# Z: w( K$ H
  3. proxy_pass http://127.0.0.1;  {: A. u& Q& k) o
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html6 V1 d8 Z0 k3 ?3 `$ Q2 Z3 p8 w

9 G1 N3 L  N! I0 x& g$ s5 a4 N/ U: t
游客,如果您要查看本帖隐藏内容请回复
: k  Y7 |" H0 V2 E& p- A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-4-28 20:51 , Processed in 0.123477 second(s), 21 queries .

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