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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发  o" ~3 @( b- W0 [% B% _

6 q4 ]; _4 R0 j5 W- Z- O本文中,我们介绍Nginx如何做端口转发,还有各种转发规则! s1 b) h$ I: \

) o6 S; b9 `; g# q( _4 |) l- R将域名转发到本地端口' h: N$ @# c$ O5 A: ~/ }. d
首先介绍最常用的,将域名转发到本地另一个端口上
) G. l) N( g; i5 g- R) d( C
  1. server{$ c0 K6 K/ \; r# b1 Q
  2.   listen 80;
    . Y4 r+ ]% _3 ~. Q6 T; `6 k
  3.   server_name  tomcat.cncml.com;+ q% m; C2 R* r. s0 D
  4.   index  index.php index.html index.htm;
    & e* H- n+ j& u+ c6 g2 V, m

  5. ; _' i  o- Q# O; o
  6.   location / {9 \6 ?9 X: x7 O  ~
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    ) n2 V2 C9 X- W9 X8 T0 e
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    3 z$ L8 P: [+ h$ Z5 i1 `& F. z& Z
  9.     proxy_set_header X-Real-IP $remote_addr;4 b3 m( P% `, @. J( h5 ?
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ( p6 P: D" W) ~, h; y5 g4 B
  11.   }" O, T+ I' z9 _1 z% z+ R
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
  x+ }% C3 P+ K4 ?  i# M/ }8 i4 ~; J1 _; w
将域名转发到另一个域名
6 k* q. ^1 v8 b# C& Z* t
  1. server{
    " u( r( i. P8 u2 K* ?4 n. N
  2.   listen 80;% W# q3 O9 q" x1 Y, t' C" [
  3.   server_name  baidu.cncml.com;
    6 x1 z5 `  A3 ~
  4.   index  index.php index.html index.htm;
    & Y* z2 U/ |) ^. {

  5. + ]$ P2 r3 y" i. n
  6.   location / {7 q% p7 [- B* G; B9 S
  7.     proxy_pass  http://www.baidu.com;
    ! r1 x6 I/ i+ V( k  q
  8.     proxy_set_header Host $proxy_host;" O0 d8 {3 I. O5 M0 g" a0 ^
  9.     proxy_set_header X-Real-IP $remote_addr;
    9 y; U' }% l* B# a
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      Z) [3 N" v: z, }: E0 ^2 \
  11.   }( y4 _4 ^3 _2 G2 @! Q
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名! a/ n) D% v3 H
  1. server{
    ! ^5 s; ]! h& l& T+ O; {
  2.   listen 80;9 H! z* A: r9 R# |' m6 W
  3.   server_name 127.0.0.1; # 公网ip
    0 u6 p: B( k! g7 w' q9 a8 y/ E7 E
  4.   index  index.php index.html index.htm;
    9 W! |0 ^! X& O2 D( ~7 a) q; m$ g  N
  5. ) Z6 f/ M% k$ m/ H/ b2 T, B
  6.   location / {: v0 y5 L: ]/ Z% u* o& w3 o) X7 J
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    " R6 Z# S8 B# O# r( G
  8.     proxy_set_header Host $proxy_host;
    / V% p3 Y" f# R( Y( i3 P
  9.     proxy_set_header X-Real-IP $remote_addr;
    2 z# u) E$ D2 I9 c
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    + k9 f! A  W) p0 P2 Q
  11.   }/ x5 N8 g. M' @3 s( ?3 j5 m
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com  q" M  ]! a2 Q4 M) g) C1 J: m

7 B$ `/ k2 ?7 D7 E9 l加 / 与不加 /1 ~$ O" \; V, u4 P3 l
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
/ v, q' o5 C4 y0 N, g4 v
$ L) u% H. D- W3 C7 F/ {例如
$ n7 s; g$ j$ e: |" T0 b3 W% Y0 u8 q# w
加 /3 U9 K8 s, P7 M, o1 j- A
  1. server_name cncml.com
    6 ~- N$ r& |. j
  2. location /data/ {
    & r# c1 N0 U/ ^" N1 L  M4 M
  3. proxy_pass http://127.0.0.1/;+ M; f! b: F3 n& |. f
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
1 m. R* m8 l4 U3 D
, M! N/ D* v8 ]  v8 M& K5 N0 q不加 /& f, N5 @0 I' Z8 ?+ k! G
  1. server_name cncml.com1 e: [1 o. r, L4 K/ P  u7 Q
  2. location /data/ {7 n1 g6 m6 Y& C
  3. proxy_pass http://127.0.0.1;7 u1 n- x7 a4 y, \6 q' H+ t
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html: ~9 ?+ h5 @; j

1 p6 I  ^3 ^4 R5 Q
游客,如果您要查看本帖隐藏内容请回复

/ P# l2 ]" G  R1 ~6 j  f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 16:58 , Processed in 0.112896 second(s), 19 queries .

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