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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

8 Z* l; i5 T* `) r6 e0 l本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
/ _& H4 q( }+ \2 I+ d& w2 h2 K$ f6 D. i) v9 }
将域名转发到本地端口/ ^& A; R  a  g" \! B+ p
首先介绍最常用的,将域名转发到本地另一个端口上- M* y/ C* c( k6 u( a% c
  1. server{
    / I5 N4 m2 d% J+ W8 k) J& d3 C9 u7 }
  2.   listen 80;: C/ z# R% M- `3 H6 g
  3.   server_name  tomcat.cncml.com;
    8 X) N8 A5 l# H) [% J" y/ s
  4.   index  index.php index.html index.htm;
    & ~: M! P- e  ^3 `4 D7 M1 X

  5. : [( O: D, A6 G2 V' L9 v& S
  6.   location / {
    & W4 H0 c% i5 S5 T( p
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    9 f) E; W% X6 v  Q
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求: {8 I, ]: Y  G4 \
  9.     proxy_set_header X-Real-IP $remote_addr;
    4 g. n- Z- ^  t! z
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ! E+ z- j  Y  I+ \
  11.   }2 M/ x2 E' F! A7 p
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口  J7 N) l$ w; Y5 P, J  `

2 D+ `) Z( Q2 g& @$ q& d将域名转发到另一个域名
0 r3 O% u2 X2 C$ w: X" p( P' [* U
  1. server{
    7 A  r2 ~/ ^- J# I; L4 E2 a6 y1 M
  2.   listen 80;
    9 E7 y: A# R$ B" B8 [% m
  3.   server_name  baidu.cncml.com;
    % Q4 {+ w2 M/ C: m/ M' R
  4.   index  index.php index.html index.htm;! I; S9 t% [  h* i

  5. 5 i3 `) c. a( F! c
  6.   location / {5 x6 k2 F9 {3 N$ C/ U0 J) C7 q
  7.     proxy_pass  http://www.baidu.com;
    % ~7 |+ X5 @5 X+ q5 N1 r. F1 ~- b
  8.     proxy_set_header Host $proxy_host;
    ' v& G1 Z( ^* T" w  z' B
  9.     proxy_set_header X-Real-IP $remote_addr;  G! W# ]! Q& B* @! [/ ^
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;, q: ?9 X3 X( s: l/ N  f2 P  {, q" {
  11.   }4 P) c: L" A) J) m
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名4 H  k0 Q5 C- U- N
  1. server{$ E  M, B/ ]  p2 _0 Q* S1 z
  2.   listen 80;
    8 G8 ], ~  ?. b& C3 z
  3.   server_name 127.0.0.1; # 公网ip
    * a' q4 p3 L5 Y# K7 V9 T
  4.   index  index.php index.html index.htm;( L) i1 [/ n3 r# A6 \% ^

  5. 0 V1 \( C& l8 J1 f+ Q' K
  6.   location / {6 D% F! T+ S! V+ F* O( }
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    : I: r9 O! ^9 b4 F7 C1 f* ]! _
  8.     proxy_set_header Host $proxy_host;
    ( y0 }0 K- W  b: @" l% \( _
  9.     proxy_set_header X-Real-IP $remote_addr;
    $ ~$ n* @: H& R; z1 h2 R1 V5 ]- N
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    8 f8 i1 W9 T/ V2 C
  11.   }
    : V  ], X9 k, X- L% h: M/ c
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com. {- u5 ~' [! g* r) ^5 H

; u5 e( Z+ T4 w3 d% c+ f9 E加 / 与不加 /. \. N6 E# s/ }  X
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
$ m8 Z# ]' D% Q- Y2 m& S! X& N5 j) d! P4 y. _& h/ U+ ^
例如& {) K8 |3 z; j

% Q3 ]+ A, y) [/ j0 ^9 g8 A; V加 /
& x/ _$ [( i" j" ]1 E: s3 E
  1. server_name cncml.com
    ( S0 o" @! V5 _4 J
  2. location /data/ {6 }2 ?# f( Z) ^( C& S3 m* Y) p: T( }
  3. proxy_pass http://127.0.0.1/;/ ]) r2 {; @9 c: C  y! J
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
! \, O+ j* P; W# g7 J# G/ a' l7 b; O% \$ ~9 l: ^
不加 /3 y# l: q* v" {# I4 d+ ]
  1. server_name cncml.com7 x. {/ o$ k# w
  2. location /data/ {
    . C1 l# v0 S5 R$ c5 r5 H
  3. proxy_pass http://127.0.0.1;
    - ~, Z) x. L/ ]
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
8 n3 ]: X+ Q7 i/ [" N: I" S1 D5 q5 |/ B6 T" M
游客,如果您要查看本帖隐藏内容请回复

6 p& Q0 p  }. g' N) b, O- d2 ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:10 , Processed in 0.053990 second(s), 19 queries .

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