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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发* _4 \% L' F" ]  F1 J: K4 c! k0 g
+ u  {! m9 e: B; k5 I
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则+ k) S9 n( g, ]6 D% z; c2 S8 z: U* o
1 E8 W9 A6 b7 w/ v
将域名转发到本地端口
8 {" g* d2 F- b& p1 }+ V1 e% R: v首先介绍最常用的,将域名转发到本地另一个端口上1 M; q" y" D! G7 k/ Z
  1. server{! ]5 {" [6 J7 x6 ?8 l; a
  2.   listen 80;
    ) T$ H9 B4 S# }
  3.   server_name  tomcat.cncml.com;
    + Z$ h! Q( s. R) \- {4 ^4 y
  4.   index  index.php index.html index.htm;- t9 a6 W9 v( Z3 W1 H4 m

  5. + n( G# x* U/ u. K0 J
  6.   location / {
    ( l) M1 H( a) ~8 N
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则+ e! j) O; `! m0 Q' b) j+ F
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
      O2 z6 p& I2 u
  9.     proxy_set_header X-Real-IP $remote_addr;
    2 A5 u# e# p, G, @* R  |( U- A
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;1 C2 U7 C! Q7 r' f; N; S
  11.   }
    ' c  t. G6 {( P- g
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
8 c8 Q- j1 t9 n( j7 x6 Y* W6 E. `" K
将域名转发到另一个域名- Y9 X9 r( V2 O7 h. X# B7 c
  1. server{
    # `5 a& o( k  r2 [5 ^8 c& Q6 U# R0 R
  2.   listen 80;
    6 W2 s. S, L% |
  3.   server_name  baidu.cncml.com;  R* L: S. G0 V! W$ o; i( I/ ~9 v
  4.   index  index.php index.html index.htm;
    ! o/ N' r; p$ ?5 C- s1 n5 l+ s( s9 v; p

  5. & H5 a0 g* u. v" d8 g
  6.   location / {. U4 R* A- n! M
  7.     proxy_pass  http://www.baidu.com;
    + D  E( a1 ?+ \, Q( @1 `2 e! O  H
  8.     proxy_set_header Host $proxy_host;5 S9 h$ D( L+ i% ?/ r0 I" W: w+ y
  9.     proxy_set_header X-Real-IP $remote_addr;( A- ^  b0 [0 N1 y
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;& ~4 p8 s* ]! ^  e. e
  11.   }: `3 B. J1 C8 L
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
' b4 g, @1 {6 l/ y7 J: L9 X; n
  1. server{; G1 q/ Z( e1 q! C
  2.   listen 80;
    - s3 v+ F3 G$ Y1 ~0 r8 G* _
  3.   server_name 127.0.0.1; # 公网ip9 a( E: R) D/ r
  4.   index  index.php index.html index.htm;
    ! f7 r* }! v3 x* R+ R" n& _; x
  5. 8 v8 m; A% S9 G1 z" n) g9 ^% _9 x, o
  6.   location / {/ e# H" c, T/ Y( m
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    8 K' D) c$ F4 W
  8.     proxy_set_header Host $proxy_host;! X+ O1 E& x$ d$ h
  9.     proxy_set_header X-Real-IP $remote_addr;5 m% s) L6 U2 ]1 }
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;' t1 A2 |9 t0 z' x, ?8 d! k
  11.   }9 T/ n& m: n/ w- f) Y
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com" ^/ {: s+ p1 t$ C$ S
7 d. W- j* O' x0 p3 N: D
加 / 与不加 /. c; l$ K1 H/ T; I' j: I
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
( I# e6 c* ?/ V0 a( b. R! [9 D# M+ h9 S) j: K6 @: m
例如
+ m- I( d1 r7 {( |' l& W# S$ U5 @6 M- y
加 /" [) {7 P1 K0 W  |
  1. server_name cncml.com
    ; W( l0 w7 R, L
  2. location /data/ {
    + l' ^0 t4 z# c: f" I+ I/ `
  3. proxy_pass http://127.0.0.1/;
    + k1 Z& y  p+ W' j! A$ C) b
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html2 C4 U! a: r1 _7 m4 k+ v! A0 e

  G4 ]2 p$ A+ a  L4 \" Z不加 /% v% b/ J* ~! g# v& |- e
  1. server_name cncml.com0 E; F# Y1 f7 V* i$ A5 R
  2. location /data/ {
    / [) N7 {2 k3 L/ a0 }( e9 `
  3. proxy_pass http://127.0.0.1;
    + p% X4 {  |. p, @% l; [
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
, L  b" ?- Z+ p, P' [+ u
% r) W6 q6 m! D; ~$ M
游客,如果您要查看本帖隐藏内容请回复
  T% Y; |+ y: i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 11:45 , Processed in 0.054591 second(s), 20 queries .

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