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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
( g) E8 q- h) {+ W
! e  D3 a+ ?9 j5 ~本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
, B; r% I2 s! D3 o5 k$ p
# ^" a( v# E& O, a1 T将域名转发到本地端口" [5 o# ~1 }6 C
首先介绍最常用的,将域名转发到本地另一个端口上1 v3 O- V  g* g2 R5 p
  1. server{
    , P) w- g4 T8 }6 W7 R
  2.   listen 80;
    . v* Y) ~' o3 l. T& e
  3.   server_name  tomcat.cncml.com;3 K$ {( P2 Y9 L* E# S( I' m
  4.   index  index.php index.html index.htm;8 ^9 H+ t# S) v+ x. b- i; s2 q

  5. ' x, Q! U5 T  O% M0 c" [
  6.   location / {: p7 B% z) ~# T% U
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    $ p; P$ ?$ |2 d, K4 |- h
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求; _) k/ V# `5 `  s! r
  9.     proxy_set_header X-Real-IP $remote_addr;7 }; F+ P, G9 v3 K! P& k
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    3 Y. a2 r9 L4 D. h) H! o6 i
  11.   }$ m* x8 k: R0 ?' f' [
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口; M4 _: f$ N8 q" F# I6 \
; H" k" ^1 J7 F9 p7 Z3 B. C( L; a
将域名转发到另一个域名
4 Z3 \% A1 S$ I0 L8 y! h8 K
  1. server{6 Q! T; x5 I% D  D2 c4 r
  2.   listen 80;5 \8 q0 H" \1 V6 G. w
  3.   server_name  baidu.cncml.com;  C2 q! c$ }& G8 b8 `
  4.   index  index.php index.html index.htm;, ~+ Z  y$ e9 i1 e  _
  5. 2 y/ c5 E. S2 F2 E
  6.   location / {! L0 P# u: x. b9 y6 f
  7.     proxy_pass  http://www.baidu.com;9 b( }$ S. R  t  U
  8.     proxy_set_header Host $proxy_host;
    2 |4 s- @0 F' m; }8 j
  9.     proxy_set_header X-Real-IP $remote_addr;
    3 f$ W( i: T; x
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;6 z0 D% g' L3 E( d6 A1 q4 W7 e
  11.   }
    - L- G) B$ O1 U* y. R" U8 ^& d
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
/ S7 P) g) [% p3 l: x9 b8 D
  1. server{
    " F) v( ~8 ?3 g- q) {" b
  2.   listen 80;
      C! a' P4 d: Z  q1 ^( T1 F
  3.   server_name 127.0.0.1; # 公网ip
    ! L/ C  U/ {; C+ o
  4.   index  index.php index.html index.htm;
    : ^* R& a7 [/ e% D
  5. 1 X) u8 U* m3 I/ ~/ B9 B
  6.   location / {4 J7 }" O. ~: @$ r. G
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
      N9 a4 r( Y8 @/ F- ?
  8.     proxy_set_header Host $proxy_host;
    ! @7 i& D; [4 r& c$ a! j
  9.     proxy_set_header X-Real-IP $remote_addr;- s4 e6 ?/ [2 X: q% _# l% i
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    " p1 N& Z0 ^) v" c. `7 W" O
  11.   }5 [; u7 n9 r% s2 L* H4 p
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
( y% z9 H# J  l4 n9 Z- y0 r% [! k6 o# f
加 / 与不加 /( Y* d: x* s% d/ S2 f  L
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径7 |& d$ F, C0 X4 ^6 G9 o- z$ {

2 a9 ?$ v2 o+ Y& N例如) _; [! E- C$ ?) |: r

; E0 v6 e. T4 u4 O* x9 N1 u6 q$ x加 /
* V7 N: h. o$ N/ W4 g
  1. server_name cncml.com
    : B8 @+ F3 J2 |+ r% B
  2. location /data/ {
    : U+ p0 U. v8 J4 ^9 @
  3. proxy_pass http://127.0.0.1/;0 W' p0 Q  G3 S, C! ^
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html3 I, E- X6 X, v' D
9 n8 V: {" c' O6 \$ N6 d
不加 /' Z9 L" R4 P) ]' U
  1. server_name cncml.com
    $ {! c  K" u# k8 P3 I9 k
  2. location /data/ {
    8 h$ v9 h# |9 c
  3. proxy_pass http://127.0.0.1;
    % w1 n# }: t; J; o) a
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
; G* M( w% r: f% ]$ x* R1 E' R. p* p! I! H0 _7 ^" ]3 c$ q
游客,如果您要查看本帖隐藏内容请回复
$ @  P- k3 F2 {* a( X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 16:22 , Processed in 0.053970 second(s), 22 queries .

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