你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

nginx负载均衡一些配置简单的实战演示

[复制链接]
gaosmile 发布时间:2021-3-1 15:16
一、前言

最近空闲时间稍微少了点,晚上下班一般会看会书,所以更新也就没有那么快了!这不最近在看之前买的书籍(今年真的要多看点书籍):

微信图片_20210301150947.jpg
微信图片_20210301150950.jpg
微信图片_20210301150954.jpg

, f  i& V4 H# j8 o0 \  ~) S3 q8 [& a; X
还有音视频接口和解封装框架,我差不多快捋顺了,其实之前很多人问的接口,完全可以去ffmpeg官网查文档说明,而且上面还有很多的demo测试案例说明:2 P! ?+ j( Z+ h
微信图片_20210301150957.png
差不多下周开始继续更新音视频的学习笔记;
! w9 M6 a* ]+ I! ?. {( J( W
今天这篇文章呢,主要是总结一下过年期间复习的nginx负载均衡一些配置简单的实战演示!
二、nginx的常见使用

这里我主要演示nginx的源码安装以及相应的模块安装,然后讲解一下负载均衡的原理并通过实战来简单演示,还有静态资源的访问(比如说图片和视频的访问),关于什么是nginx,它是干什么用的,网上有很多介绍,这里我就不啰嗦了,我挑重点实战来分享!

1、nginx以及相关模块源码安装:

我们先进行源码所需要的模块
/ c2 l- _' n! m5 B9 b- L, E

-- nginx-1.13.7.tar.gz

-- openssl-1.1.0g.tar.gz

-- pcre-8.41.tar.gz

-- zlib-1.2.11.tar.gz

微信图片_20210301151000.png

( }; h- Z5 _- g8 P, B
对应下载地址:
3 K/ s( G+ x: v) b
wget http://nginx.org/download/nginx-1.13.7.tar.gz2 A# i/ X/ u5 }" b2 ]9 a  t1 O
wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz
) d1 N; F0 T6 s( b4 n2 ~: C1 Pwget http://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz
* K3 Q2 s' D" B8 dwget http://www.zlib.net/zlib-1.2.11.tar.gz
2 G: S! d4 ~% B6 k1 n# `

0 q1 s3 ^# f8 P! f3 b
(1)解压nginx:
微信图片_20210301151008.png
(2)解压openssl:
微信图片_20210301151011.png
(3)解压pcre:
微信图片_20210301151014.png
(4)解压zlib:
微信图片_20210301151018.png
微信图片_20210301151020.png

' h' c- s3 `0 ^3 |/ v2 z  H

& `! P2 ?( b) b' J, ~! A7 T
(5)进行配置,先进入到nginx里面去,然后执行下面语句:
) S/ s5 f; t% a! M8 P  N
微信图片_20210301151023.png
./configure --prefix=/usr/local/nginx
. [) e" I/ _. v4 M9 j3 N--with-http_realip_module
2 K# `' ?" C4 G3 o4 C--with-http_addition_module
1 v, ^5 m6 B0 J9 J) S5 n; y--with-http_gzip_static_module5 E5 S2 Q# {4 H! {$ Z2 z' |; j
--with-http_secure_link_module
5 g% G6 {  g/ x" f4 Q7 D--with-http_stub_status_module
$ ^  b/ N+ t  Z0 B1 R1 U--with-stream4 F8 v) t5 n' ]# R; _
--with-pcre=/home/txp/share/nginx/pcre-8.41+ a* A, g0 @4 [) H! h, }) O
--with-zlib=/home/txp/share/nginx/zlib-1.2.11
: j1 U) S0 Z0 ~6 S, f--with-openssl=/home/txp/share/nginx/openssl-1.1.0g
; x' y( P4 E$ m% Z+ r; Y
9 o4 W5 o) B: S# P
然后直接make:$ \1 ?0 P- f0 ^. P3 E7 R. c
微信图片_20210301151027.png

/ ^! V8 ~# y" P' p4 \
然后接着再sudo make install:
微信图片_20210301151030.png
最终我们可以看到在/usr/local/nginx/目录下看到安装的nginx:
微信图片_20210301151033.png
现在我们可以试着来运行nginx,并进行访问(下面的访问成功):
微信图片_20210301151036.png
+ n+ |8 B' @5 h+ n& n: u1 {. m


) ~1 D1 _; G- T  k

微信图片_20210301151040.png

! B( w% O5 s+ E& J  u+ Q" M


. S/ h) m8 g, J% {

这里小结一下:

很多开源软件的安装步骤大概都差不多是下面这样的套路(比如等下我们下面要安装的模块,也是这样安装的思路,所以这里就不造轮子了)

-- ./cofigure

-- make

--sudo make install

2、自己写conf文件

在平时的开发过程中,主要我们要去配置它的conf文件夹下的nginx.conf文件

root@ubuntu:/usr/local/nginx# ls0 a. E0 o3 ]1 _) i+ c
client_body_temp  conf  fastcgi_temp & V6 v, ~( p- V
html  logs  proxy_temp  sbin  scgi_temp
" V! F& q( p9 S9 Y9 U- f/ Luwsgi_temp* D/ p4 t2 r) s, z
4 a. i" m( U# h) Y) i! t

这个文件原本内容是:

#user  nobody;
  Z% O/ Z; R' j0 n9 oworker_processes  1;
# S0 D& D3 [. q) J' c/ F
4 |" @' n1 X' m3 `2 x5 u$ t" U#error_log  logs/error.log;/ q0 W6 W, _) o0 }, j2 s
#error_log  logs/error.log  notice;
& B8 ]; l* U$ R#error_log  logs/error.log  info;, S& r  q3 q% F) W0 S) a4 r9 T! L
3 |9 C* Q. e" p; c/ l
#pid        logs/nginx.pid;( G  {% Z2 F/ p# o! B5 O

- b, U" o# a6 \# K9 l( W$ i5 ?0 g. x
events {, u8 f* _% g; V4 _4 z; k# F4 v" m
    worker_connections  1024;8 H# h/ w2 u( Q6 L6 q
}
' O2 t+ l. r) V1 ^
* P* v4 d8 P0 S; x6 x3 |6 G2 [2 f. h; |/ F" h( K
http {$ z3 i4 c) A$ K  c
    include       mime.types;
  s& c4 f- V4 }0 ?) H    default_type  application/octet-stream;& t2 ?1 `' v; B0 w

. ~( q! a/ o5 r    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
/ @5 _- n: B, @7 V2 m/ u    #                  '$status $body_bytes_sent "$http_referer" '
* m- w( b, U/ {; @    #                  '"$http_user_agent" "$http_x_forwarded_for"';
+ ~( P! {* N( d4 g* p
, C, R3 t0 E! V- b& M) p; f8 D    #access_log  logs/access.log  main;
4 T6 K( k$ {, H1 e) r6 C9 G9 m2 ]3 c2 e
    sendfile        on;' P* U/ R7 n7 c6 H/ O! C6 F( \! W  i
    #tcp_nopush     on;
; J: f1 G4 W0 y% d2 h3 g1 ]
+ m# Z! H( r# r% g8 T! l5 c    #keepalive_timeout  0;* n, ^: d' \3 V
    keepalive_timeout  65;
! M( x4 m. ^# O0 N( V5 K6 m, k) d) G8 e3 _6 z
    #gzip  on;
7 \8 l2 b4 g+ a9 A
7 i6 L9 @$ c" ~    server {% J; \* ?5 j6 n
        listen       80;
+ K+ P# b& g2 g+ T4 f+ m/ h        server_name  localhost;
& g) {- G, ]8 |- z2 R9 P4 k$ e% @" j- _
        #charset koi8-r;4 u" |% T2 O8 m# y9 ]  C/ h

. z, \! M: t. d4 {  k        #access_log  logs/host.access.log  main;- h% L( S0 Z  D0 i

/ I$ w& b  {  e" P: O% [        location / {- K! i1 y3 \7 m" o* A1 ?
            root   html;
' J6 C9 ]6 A6 P8 z            index  index.html index.htm;
& H7 {) _& i" t4 U1 e% J" U: c0 V5 o7 a        }3 ?1 O% I) W. c! }. g" ]. ]
6 w9 J9 G9 ^8 x& J% {, h. z% ^
        #error_page  404              /404.html;
! `: \+ Q; M* C! D9 p7 D& \# Y. q- Z# U* R) n+ Y8 ?8 h+ R. q
        # redirect server error pages to the static page /50x.html6 M7 N+ m1 i& H: S  q
        #
6 U. b/ [2 g& o3 L' U8 g' t        error_page   500 502 503 504  /50x.html;% X* Q" m- v( s
        location = /50x.html {
0 A4 ~6 A/ r" f            root   html;
6 F9 k( V) Z' X  D# y, H$ w, o        }
: _5 e+ D9 Z+ K# y7 @0 C; L" B( L1 ^7 B) B0 x! ]2 u
        # proxy the PHP scripts to Apache listening on 127.0.0.1:801 i* j) u9 r$ M. @' Q5 s
        #
# t% B+ ~. z2 S% M3 |' `$ O( ~        #location ~ \.php$ {) J. [2 S! t9 o0 M# t& O3 G( y
        #    proxy_pass   http://127.0.0.1;5 H" m) D& G9 ]8 d- d; c, g, ~
        #}
6 C0 O# j) F: F+ M  z: \
( M: s; e2 G4 M$ P7 O# X        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000! z2 a# M- Z) a" U7 f& S
        #
0 D; E# c/ T, e" R- d) O0 f6 w' w; Y+ Z        #location ~ \.php$ {
/ R- @, V7 u/ ]6 T& X9 l& Q        #    root           html;/ P- a4 j( S, x8 ^5 R3 I
        #    fastcgi_pass   127.0.0.1:9000;! q, H  i3 L. I; K' c/ l
        #    fastcgi_index  index.php;
/ W- o3 {, P/ R* i* O# I        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;0 i+ O" @7 g8 j! ~% s! a
        #    include        fastcgi_params;9 x. _5 K( }; k& s1 d2 I
        #}
) T/ l0 o+ C% Q( r2 t4 H. t! L" y6 t' n- W
        # deny access to .htaccess files, if Apache's document root4 T8 z: D9 L; b) m# j( V/ [5 c; q
        # concurs with nginx's one% Z# z: T4 r- e4 M3 r. A" X+ x/ k9 _: P
        #
+ F, O: B6 B0 g7 U# t/ }& {        #location ~ /\.ht {1 t( w# h9 i; Y7 }3 D
        #    deny  all;
" m4 \4 I6 v9 y# d        #}
3 b) F9 N$ ]- @. b! D0 t( e) k    }4 z3 J; x8 R; J9 v
6 p" }$ k3 z5 a/ b, e

  L% A) Z" o2 C7 v6 p" a# C7 o    # another virtual host using mix of IP-, name-, and port-based configuration: Z) B* J* P; A% _, ^; x* a# {+ q
    #
; L0 d( T4 n0 ]+ z" H    #server {
- u0 i# [; h# r" L" O    #    listen       8000;6 a  F% e. V7 @; }6 ~2 k
    #    listen       somename:8080;* @9 Y& P  y4 l3 J
    #    server_name  somename  alias  another.alias;: ?: T/ M% V: s% d; r5 A! R+ W
( v- _& N+ {; @- x, i( j% _
    #    location / {
; J) Z; N# B7 _2 ~* [1 R+ }    #        root   html;
, T$ t% [( y! i  z/ A; d    #        index  index.html index.htm;
9 h$ l! n% K* g- u6 b8 }# L" F    #    }0 P' l2 T8 ?/ ^5 o1 p! M
    #}
  L; x; i& ?( I0 U  Q% R- {/ B/ v2 A& @. L& r4 ~; c

3 J4 w6 V" n' |9 |0 s% ?& g1 o- H' ~    # HTTPS server& r7 a9 U2 ]3 e
    #& t% J2 |7 @1 ?9 d0 r+ h4 C
    #server {
4 D) O' i! a- B# n: R% E5 p% J: v    #    listen       443 ssl;, q  e8 u/ \3 I: ^
    #    server_name  localhost;: S5 U: l+ F  S! M2 d

" u* w% I1 {' {: o" z8 g1 U    #    ssl_certificate      cert.pem;
2 d& M" G0 r# I9 r4 D2 r, \    #    ssl_certificate_key  cert.key;1 C% ~; D) ]8 I7 h# f8 {; h8 k
* ?; w2 y/ `! k0 W6 S, Y
    #    ssl_session_cache    shared:SSL:1m;9 {) ~# ]9 l/ m
    #    ssl_session_timeout  5m;
: V' Y! T1 B/ u# j  e
4 r! G; [1 _% A7 Q: Z    #    ssl_ciphers  HIGH:!aNULL:!MD5;
& C3 l4 b  \2 a' R# N6 R    #    ssl_prefer_server_ciphers  on;+ k: [7 F, e8 E! N* [/ {$ [

' `, w% {2 e( R    #    location / {
# p% V  E) W1 K' f/ t/ k9 ]0 o    #        root   html;
5 D2 N3 ^9 R# n- g6 s9 p9 `    #        index  index.html index.htm;
3 z+ i( E; [% d! T- X    #    }6 S  }6 h5 [: r$ B
    #}
+ q9 D# W3 n2 w: @( N0 ^8 y! |+ P
}
4 A: Z2 ?/ e, d! c( P6 w
8 \: r* L; j( n( ?( H6 e+ A. l

这里内容比较多,我们现在自己来写一个配置文件来实现nginx的访问:

txp@ubuntu:/usr/local/nginx$ sudo mkdir demo_conf
0 y. W9 c! a, qtxp@ubuntu:/usr/local/nginx$ cd demo_conf/) d" x. L/ R- v$ p! e% E
txp@ubuntu:/usr/local/nginx$ vim demo_conf/demo.conf+ @, a! f, H" k$ W
worker_processes 4;#进程数量
7 C4 _7 [9 V6 D+ J8 _& D2 O& f% T! \+ \" ?6 \

& z. G9 g" F4 Z6 Xevents{* L0 j3 m0 I6 j9 L
        worker_connections 1024;#并发访问数量0 i9 c  v1 p% W$ F( p! h
8 X- j% V+ M; [0 B: t- v
( i) W8 `% y1 o
}# A4 O% K. Q8 Q& E$ g$ `
http{
( X4 s9 V) o3 F- v        server {3 V9 x" }; m: V4 D* D. ^" ^" Z9 c. u
                listen 8888;#监听端口
+ y( p% d, @. a4 U: K. f                server_name localhost;#服务器名称
5 w4 N4 X+ E+ E3 D9 k& ^% s
( v6 [0 E; t, c                client_max_body_size 100m;#访问的数量大小! O- W0 o3 x0 m- }' X
1 J: ^# ~: t5 N$ \+ X3 w) _" w) K, _
                location / {
. d3 e% j, r( v" e                root /usr/local/nginx/html/ #访问这个本地服务器里面的这个html页面
  b8 ~! W# S  W) v& p3 \
/ A5 F; U$ {9 a! C5 w/ R! ]5 W                }
( j2 R! P( _- y5 k+ A+ Z4 P; u        }
9 S9 h5 v+ m: i3 a0 S
# z4 p$ x# U1 {! X}5 e7 w. E/ E. O$ d3 ~

现在我们来看一下我们自己配置的是否成功,先把之前的nginx关闭掉:

./sbin/nginx -s stop
. ]7 N7 b' g- H- b, D% W

然后再执行这个配置文件:

./sbin/nginx -c demo_conf/demo.conf, Q/ |, J+ V6 `+ a- Y# m' b5 y

微信图片_20210301151048.png

这里扩展一下基础知识点:

Nginx 由配置文件中指定的指令控制的模块组成。指令分为简单指令和块指令。一个简单的指令由空格分隔的名称和参数组成,并以分号(;)结尾。块指令具有与简单指令相同的结构,但不是以分号结尾,而是以大括号({和})包围的一组附加指令结束。如果块指令可以在大括号内部有其他指令,则称为上下文(例如:events,http,server 和 location)。配置文件中放置在任何上下文之外的伪指令都被认为是主上下文。events 和 http 指令驻留在主上下文中,server 在 http 中的,而 location 在 http 块中。

3、负载均衡、反向代理和静态资源的访问演示:

--反向代理原理(ReverseProxy):它是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,简单来说就是真实的服务器不能直接被外部网络访问,想要访问必须通过代理,如下图所示:

微信图片_20210301151051.png

上图中有两个网关,一个是nginx应用层网关,一个路由器硬件网关,nginx和各服务器都是在同一个局域网里面;路由器它做了一个端口映射(nat)直接访问到nginx,给人的感觉nginx就在公网上面;

注意这里的服务器对外不提供服务的,通过nginx代理来向外提供服务;外面访问的是公网ip,然后通过端口映射找到nginx

现在我们用nginx做代理配置(比如说我这里用143的这台机器代理141这台机器):

worker_processes 4;
! \- `! \/ B4 c5 U- y8 J4 r5 M% a0 G& X8 ?) y2 E# n/ r
+ A$ Q4 ~1 y0 K2 L  P( Z: b
events{
8 i) I1 {  u9 F' {5 H3 U! B" l        worker_connections 1024;
+ F7 h! b; M- ^5 V* E( L* F6 o: l7 L2 `$ `* `: J
0 i* P+ t: M& `! I" G1 J
}4 Y0 i4 `4 s8 F0 y2 J* s  D2 ^
http{, @1 A; x) ^+ L6 r  M( |- N6 [* s
        server {6 _8 i% h( @% ]$ s6 p
                listen 8888;
6 p4 j; D% z" {0 e1 F; Q( {                server_name localhost;+ V4 V$ c; h, r2 q! j

6 _4 Y' A3 _! M0 |/ e                client_max_body_size 100m;
- h' u7 U' l/ T/ r7 C" Z: f
( p3 |8 t9 P: H2 I                location / {
, }/ }# d+ S  M, g" U                root /usr/local/nginx/html/;
( U3 n' w$ s. t7 P3 g* Q, x+ e9 V                proxy_pass http://192.168.29.141;2 l5 t9 P* S0 l$ v  r$ r
                }
+ I5 u( z) V5 c3 a5 _3 \        }/ s. @. y, i! X$ W
; F. o$ B! a. N- ?
}
0 V  K  ?' }. `) f: ]8 j/ {

注意:141的那台机器也安装nginx了,然后当我访问143这台机器的时候,其实访问的是141这台机器的内容,这就是代理的使用了

微信图片_20210301151054.png

-- 负载均衡:从负载均衡四个字来看,肯定是用来减轻服务器的访问压力的;比如说当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃(比如每年双十一活动,淘宝就使用了nginx的负载均衡的功能,不然当天那么多的用户活跃在淘宝上,服务器肯定吃不消啊!)。因此为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器(也就是我们的nginx),在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。

下面我演示负载均衡案例:

worker_processes 4;
) g7 T* {* }8 d8 P$ @* Y# K: v1 s: u+ A9 e. }; d4 ?+ l

4 `2 T2 D3 ?4 `6 N/ y) Aevents{- o5 h' j0 |9 ?, a
        worker_connections 1024;
2 `  v5 s# r0 f& N' H/ r3 b
8 t7 ^4 s& h- Y# [* O- H8 |  M1 l/ m
1 G0 H1 q! P1 L0 r9 U4 r}4 l( o+ g4 y" j( F
http{8 o9 u0 X+ J" n- ~
        upstream backend{
- t7 N0 x6 b3 B7 [                server 192.168.29.142 weight=2;//weight表示权重
) n2 r* u/ v, S! ?" j$ T; y                server 192.168.29.141 weight=1;
# Y5 l4 v- ?- |: [4 p        }
8 D+ k$ r& X* Q7 g. r) m; m        server {) W: Q- j0 D8 \- l
                listen 8888;  }5 l$ I1 Y8 ]* r
                server_name localhost;* F/ U! ~$ Y  S" X2 [) j: W( W! x
. t9 n8 h- b3 a5 c
                client_max_body_size 100m;# b1 F( G! }) [/ f# G" C$ K

6 C& U3 t$ Q3 @$ ^9 J  \                location / {
1 D$ r  G2 o$ W             #   root /usr/local/nginx/html/;0 m( |9 {" z$ _# ~" |
        #       proxy_pass http://192.168.29.141;
9 c$ E" E- _2 w8 z3 }; f                proxy_pass http://backend;8 _* m3 R( Z3 U
                }1 K* g" W; a) P; }" Y
        }+ |; w( ~0 J' r3 n0 \" P8 x, Z8 X

0 ]4 c% E, j8 h4 F( H}: s) b& s# q# ~6 }& N9 n1 j

注意:权重表示被访问的更多,这里由于我三台机器都安装了nginx,所以内容显示看不出什么不同之处来,其实142的机器被访问了2次,141的机器被访问了1次,我这里有三台机器:141、142、143:

微信图片_20210301151057.png

微信图片_20210301151100.png


" l* v: I) z: d. t% j

-- 访问静态资源(图片和视频)

这里我在143的机器上放了几张图片,然后在/usr/local/nginx目录下创建了一个images文件夹,然后把143机器上的图片copy到images下面来:

root@ubuntu:/usr/local/nginx# ls
  O* Y. o& }: ~- Y/ ?6 Eclient_body_temp  fastcgi_temp  images  proxy_temp  scgi_temp   vip_conf5 c" P/ u6 a* T# Q- e4 b) g6 l6 D0 n
conf              html          logs    sbin        uwsgi_temp
  S# Y- W, v; v" X
! a5 v1 x1 h) ?root@ubuntu:/usr/local/nginx# mv /home/txp/share/nginx/*.png images/. ^2 K1 O! n0 m2 A
root@ubuntu:/usr/local/nginx# ls! H/ V4 c" @& ]) J
client_body_temp  fastcgi_temp  images  proxy_temp  scgi_temp   vip_conf( E5 F* ?# m1 N& a2 ?3 U( D' j' N, f
conf              html          logs    sbin        uwsgi_temp
9 C, x8 `* Z8 Y( croot@ubuntu:/usr/local/nginx# cd images/
& D. O! G8 a+ {* J8 Z2 j9 X+ n# M- [root@ubuntu:/usr/local/nginx/images# ls
! Y$ R2 D0 O. A5 d1.png  2.png  3.png6 I$ m7 M$ T; }. @7 W0 M6 T

然后进行conf文件配置:

worker_processes 4;
5 r5 h/ V$ A" j' W# O
5 _# L! i3 M/ S4 C; ^4 F
! r! l7 ~) K6 ^: |! G8 e# B8 vevents{
4 K9 X% w- d0 `% B& f5 W: n        worker_connections 1024;
1 |3 N1 `2 {) ~' J
3 H: o1 b; W" j2 y3 Z
. }7 {# a* g) q' E/ \}( e, \8 @7 `5 ^  _, G- I
http{8 B/ ]  Y" B: N  {: ?: `" K
        upstream backend{+ E: W2 u5 W: L9 }! T  V9 R6 D
                server 192.168.29.142 weight=2;
# J5 x6 ?) {5 o! O$ t; G, B                server 192.168.29.141 weight=1;/ P* ?1 |5 p/ |5 _( ?$ H, q
        }8 ]1 B% T5 q6 G6 M* V
        server {$ o0 N) [+ ]2 d' D1 I
                listen 8888;% ]/ ], K0 |( d7 B9 t7 h
                server_name localhost;
6 o# X7 a! M$ n+ e/ N
! P" d9 ?$ w% C% \( _) D                client_max_body_size 100m;
2 R5 ~( y. a( ~  n' w5 j
- [7 S2 ~& L$ P2 [# }7 R* W                location / {
& I7 ~! `2 p* H# _  D. N- W             #   root /usr/local/nginx/html/;
2 {: ?, C5 X7 N        #       proxy_pass http://192.168.29.141;
0 Z. f* }; x4 h: F$ O, T                proxy_pass http://backend;
! F& G' u, B. ?; m/ {* t+ X                }8 }4 S1 L/ n) a  V! O+ l
                location /images/ {
" B% L1 a; P7 q- v7 W                root /usr/local/nginx/;& g% N& N9 n9 G1 ~' X: x
                }6 P- f) r7 t7 ^
, z) ?4 O. K- \% M/ h* I( _/ p3 S! q
        }
' O+ Q1 X' q) b}6 W& j! X. b$ Q, H

实现结果如下:

微信图片_20210301151103.png

下面我在演示一下视频访问,同样,我创建一个media目录,然后把143机器上的test.mp4copy到media目录来:

root@ubuntu:/usr/local/nginx# mv /home/txp/share/nginx/test.mp4  media/
  A  h/ S3 c9 N. droot@ubuntu:/usr/local/nginx# cd media/
; C# {% H2 R# g* h3 Wroot@ubuntu:/usr/local/nginx/media# ls
9 v: `1 ]! x) R/ W- U  G, F$ ptest.mp42 F6 n8 e  Z( j" g8 q, N

conf文件配置:

worker_processes 4;
- a+ x! t  U& T+ Y0 @
5 t7 P- j6 j: m; @9 |5 \; {% T; |$ j4 h  L5 a
events{6 C% A/ I1 Q5 r2 l4 a5 s1 n
        worker_connections 1024;2 m9 ^; _" y! |

6 j+ P7 ^3 `/ \! p, ~
1 w6 `! ]* x/ G6 P7 V}
/ n4 U+ _, z5 v0 J5 p: [9 ^. lhttp{, F. f3 H+ m. Z" i% P7 w, ~
        upstream backend{1 \# k: c5 W" `3 p
                server 192.168.29.142 weight=2;! x( W# g6 y6 u; ]$ `. f, m
                server 192.168.29.141 weight=1;
/ T( c. d* i& W1 p        }
- \- A+ j5 S+ v  p        server {6 N- n6 N/ ^: b  U8 Q3 G
                listen 8888;" T4 T* ]" w" \8 _9 O
                server_name localhost;
8 `! y: @3 |+ m- \1 g$ `/ p
& Z4 G* `' r* t: B' s3 J( G5 w: c                client_max_body_size 100m;2 e2 Y& }. t- d- m! O6 C8 B
8 Q2 q" J, N2 c# g& A
                location / {
" Q0 I* f0 n+ e# f1 u             #   root /usr/local/nginx/html/;* N6 H+ p. T/ I. Q9 x
        #       proxy_pass http://192.168.29.141;: S2 a2 A! ?! \% N. g. V) k/ W
                proxy_pass http://backend;3 v* d3 K, n# J& F
                }- I: ~1 O% f$ I' ~
                location /images/ {
  q& y  {; s: B0 ?0 z* m# U                        root /usr/local/nginx/;& X4 g" n7 A8 s, _- \
                }
  h* u1 L; p. u# @8 A' E$ h+ z                location ~\.(mp3|mp4) #这里利用了正则表达式
/ s/ B6 O; g9 f4 Q8 H. E                        root /usr/local/nginx/media/;7 d" W1 [5 I: l
                }* j  Z+ d- j; `; L# t+ W
: h3 B6 h. D0 V0 y# R# d3 }+ p
        }5 E1 O& a( a7 f3 ]+ a/ ^
}! G! I0 Q: ^; ^

结果如下:

微信图片_20210301151107.png 三、总结

今天就暂时总结这么多吧,还有cgi和fastcgi的使用和区别,就暂时不讲了,如果哪天有用到,再来实战演示;最后如果对技术热爱的朋友,可以加我微信,进技术交流群交流学习,一起进步;一般有问题我也会及时互相交流学习的:

tu18879499804
/ d2 y( o" }2 ?: I/ ]* T- ?# o

站在巨人的肩膀上:

https://blog.csdn.net/X1021333506/article/details/80975462?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-10.baidujs&dist_request_id=6c30ed21-fb2d-462c-a4d8-7c5581c1b504&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-10.baidujs
8 @7 Z8 ], F# w2 H
, B# U6 |8 }0 v) O: C$ P2 whttps://juejin.cn/post/6844903944267759624* p# A0 P3 B# d4 ?

  q+ v) \3 n/ H/ ~https://ke.qq.com/webcourse/inde ... 5285890803239999870
) [$ s1 _7 m  T$ _1 u
收藏 1 评论0 发布时间:2021-3-1 15:16

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版