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

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

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

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

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

+ Z# U: u9 h- T
还有音视频接口和解封装框架,我差不多快捋顺了,其实之前很多人问的接口,完全可以去ffmpeg官网查文档说明,而且上面还有很多的demo测试案例说明:. y3 r! ]! o+ l0 l' D4 j
微信图片_20210301150957.png
差不多下周开始继续更新音视频的学习笔记;
' x; H4 Z% Z5 z) m' y
今天这篇文章呢,主要是总结一下过年期间复习的nginx负载均衡一些配置简单的实战演示!
二、nginx的常见使用

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

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

我们先进行源码所需要的模块
4 W' D* B# f. |/ n+ a$ {

-- 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

% A, p1 B+ M9 I' V2 m! p
对应下载地址:
" g6 v0 e' r0 p/ f  _* C( Q
wget http://nginx.org/download/nginx-1.13.7.tar.gz% L$ j- B; u) c0 A- I0 |
wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz
8 E9 i+ Y: R1 v$ g; `) p+ owget http://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz
# _& D- m1 {$ R0 uwget http://www.zlib.net/zlib-1.2.11.tar.gz: A2 a( q$ A! v2 P5 w* B0 Z- u9 c* b
3 n' k" X& T2 b
(1)解压nginx:
微信图片_20210301151008.png
(2)解压openssl:
微信图片_20210301151011.png
(3)解压pcre:
微信图片_20210301151014.png
(4)解压zlib:
微信图片_20210301151018.png
微信图片_20210301151020.png

  ]! @. a& |8 L  s! U$ M1 l7 Y
7 O  a3 P0 C* S0 m
(5)进行配置,先进入到nginx里面去,然后执行下面语句:
* k' u3 G) y& a" |# d5 O/ H
微信图片_20210301151023.png
./configure --prefix=/usr/local/nginx
# ]; _) W0 }5 c--with-http_realip_module6 C: a' b7 v9 J$ f1 B5 B
--with-http_addition_module" {8 r1 L7 x* t
--with-http_gzip_static_module; Y3 n7 n/ a( d7 |# a, _
--with-http_secure_link_module
$ c% h, @5 @* T% o' w! X1 U, Z--with-http_stub_status_module
8 {" c" o% c  ~3 s--with-stream( u! p6 |7 C& u" a7 V. `( b4 u
--with-pcre=/home/txp/share/nginx/pcre-8.418 q9 C) U+ z: \
--with-zlib=/home/txp/share/nginx/zlib-1.2.11
9 X' x. g1 ]) @& [2 |--with-openssl=/home/txp/share/nginx/openssl-1.1.0g1 h! F, {" B2 b  g8 v

- F6 i( V% e( q4 u
然后直接make:: C; R: N$ c# a
微信图片_20210301151027.png

' ^4 K# k2 h$ A2 q$ K2 i. V
然后接着再sudo make install:
微信图片_20210301151030.png
最终我们可以看到在/usr/local/nginx/目录下看到安装的nginx:
微信图片_20210301151033.png
现在我们可以试着来运行nginx,并进行访问(下面的访问成功):
微信图片_20210301151036.png
+ i: v' y  T. H: I

- Z# @$ w; t5 G  a

微信图片_20210301151040.png

7 E9 {4 @$ [: t) b% E& F3 K


% W. _2 \+ |: G3 x

这里小结一下:

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

-- ./cofigure

-- make

--sudo make install

2、自己写conf文件

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

root@ubuntu:/usr/local/nginx# ls. C* ]9 k! }8 j% Q: z5 F0 X' L/ E
client_body_temp  conf  fastcgi_temp 2 u  F9 \* e9 [
html  logs  proxy_temp  sbin  scgi_temp % X$ x) c; K! s3 J& N
uwsgi_temp* `; t$ o+ \# ]2 }9 k2 g! Y" n( a
" N9 g/ \6 q2 I4 h6 a5 g

这个文件原本内容是:

#user  nobody;
0 t- D5 |: T3 |worker_processes  1;/ t% t* r0 r+ \8 q2 U' B5 {/ T( {; @

/ Q- X) d/ C0 d' Z#error_log  logs/error.log;
# J! u- k  Y. h: o9 ]#error_log  logs/error.log  notice;
1 g" w0 I1 P, S#error_log  logs/error.log  info;
' u/ p7 P. w; J: s2 B  `/ Z& o: b
1 ?+ D8 e+ m2 a# @% |+ o#pid        logs/nginx.pid;
% X7 @7 z# W! |# `
, ?2 L! q' a& I. P; C8 U
. }3 j# E0 X7 y8 l- l8 Ievents {
) }' ?6 O6 ^( \    worker_connections  1024;$ m& O  Z3 d: s% E$ X
}0 x3 e0 B- }  |6 W
: `9 A+ b/ K& s5 p) E, U  W
. M% X; @, H' z+ e: d( n
http {. R8 t/ S& o. L) A2 n1 {1 J
    include       mime.types;" p+ G5 O# a' B! F, I  N0 D- _
    default_type  application/octet-stream;9 S- z7 t  K3 z) N8 C) ?1 U
! Z+ d$ t- \2 W; N
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '3 N9 r1 U) V, H! g
    #                  '$status $body_bytes_sent "$http_referer" '. v& z2 H) H6 [; u4 J
    #                  '"$http_user_agent" "$http_x_forwarded_for"';8 W! E) G) ?' m% Z0 h
1 R3 Y/ y  B( V4 E9 b% m4 h/ m
    #access_log  logs/access.log  main;- g' Y0 s7 S2 h

  M: t& C+ G+ {0 s' ^# |8 X7 k9 z! i    sendfile        on;: B! @3 s* ?" e; h) C% f
    #tcp_nopush     on;
6 F! v2 N7 ]- N; Q& n! ^+ F4 b( ]4 ^; L( y0 `9 U) c, V: c
    #keepalive_timeout  0;+ H- E7 f9 ?; t- Y
    keepalive_timeout  65;
$ g# H. \$ l  y* |7 r
% b- m+ C  u3 N3 l& U: B    #gzip  on;
  ^' r8 ^% b5 `" p5 d( r/ Y+ L4 M/ [  q+ A6 Q7 b7 l
    server {
3 t' \3 r7 i! W3 x8 ?; j) {4 P) X        listen       80;
* p5 K/ H/ r! W7 O7 v        server_name  localhost;$ g% f) ?( r2 y% y  j
- i  y) k* h# c1 _# V9 e
        #charset koi8-r;
7 S) O% t& c2 y4 b, S/ Z! g! r4 N6 F! R! \  Q: D
        #access_log  logs/host.access.log  main;4 L( U& ]0 s3 g3 X7 C8 o2 t

/ R4 E$ y8 k* f% o/ `        location / {; \6 [" ^# Z( R' l) V' x1 j
            root   html;
/ P0 W! A+ b4 q9 v. X( x            index  index.html index.htm;
" G; J# a7 B( z2 Z3 f        }: ?0 R! j) b0 y5 L
% T% i4 K2 h* u5 w2 ~8 e
        #error_page  404              /404.html;
, B# ]$ B3 J+ u6 i- X, W: e( G6 P  X& Q7 N( M" ~
        # redirect server error pages to the static page /50x.html
1 n. g. P1 ?5 E        #
2 V& J; B5 A; T6 H" H! `        error_page   500 502 503 504  /50x.html;
  Z- q/ o# M5 O" U        location = /50x.html {
& T# q; C# N( q& |& e. k9 a0 P            root   html;
1 B# e0 o' b8 r1 K2 l; P        }
9 e& Z7 ^# |8 c/ A1 o; \; s+ ?2 c6 }( t" w+ f3 N
        # proxy the PHP scripts to Apache listening on 127.0.0.1:801 Q' V0 ?& C8 l! T: h
        #
# v3 `. n+ M8 @6 Z        #location ~ \.php$ {
* O# A3 I+ m3 b, ~4 K: c& R; y        #    proxy_pass   http://127.0.0.1;
* L, e5 T8 O/ i1 F! b2 B2 S1 y        #}1 {+ {$ [  a1 D0 B& ^2 ?

1 K7 r2 E6 C/ u* r        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000/ H! [4 F+ C$ M& U) ~# e
        #/ X! d$ Z" ~: S3 f: m" o9 X
        #location ~ \.php$ {1 a6 D- @4 t% F1 K) D2 V
        #    root           html;
2 N/ b9 n$ g& @' r1 h  r" K        #    fastcgi_pass   127.0.0.1:9000;- I% T1 T- U: J" S  u" m3 _
        #    fastcgi_index  index.php;
" i; A$ d( g" o( Q+ y7 B' X9 X        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
9 u( V/ }6 l  H0 S" h        #    include        fastcgi_params;
$ g+ C$ }5 T* g% g- ]4 z. q) w1 P        #}' ?2 }1 j% p) g$ C4 i$ i- w

- K" F6 i6 p; n        # deny access to .htaccess files, if Apache's document root* I! v5 l- t4 t+ p0 g3 f& |8 U# S& p
        # concurs with nginx's one" ~: P; V; k  Z: X
        ## }7 r6 s+ s& I
        #location ~ /\.ht {
  U' E) a0 b8 |        #    deny  all;7 F) n9 M) U! q4 ^
        #}
. f; b" q9 i1 R6 H    }( p9 Y( q7 f0 i6 C7 M9 {: d6 y
7 P: V. ?& K% }5 W
$ N' t  G& n- B
    # another virtual host using mix of IP-, name-, and port-based configuration
9 g8 R  w/ f! B% L9 ^! _; l    #
7 G; ~7 i4 M- ^: g    #server {1 [( m0 N. j: F5 I: ~
    #    listen       8000;
9 Y; V# {. Y$ w    #    listen       somename:8080;: N) g8 J* P( F" K" e2 L3 \* t+ Y* k' n1 ~
    #    server_name  somename  alias  another.alias;
/ Y; ]$ x) G, {( w+ q$ N$ G: K: t. f7 x/ g  M8 _! \
    #    location / {" f9 U7 q6 \4 N5 l
    #        root   html;: A3 Q7 o0 Q$ b3 J9 q3 i
    #        index  index.html index.htm;& v) q, _: [& k6 ^' W3 B& K$ @
    #    }
6 j! n& F! e, `" L    #}
; f5 ?; w& C% P# ?/ s7 L4 V- g. @! E8 d
7 O+ s3 M  K+ h3 D/ l( l+ I% d( R
    # HTTPS server" `6 B9 X) ]2 O) R
    #, X+ a1 q1 i( K
    #server {# V6 d0 b9 ~, E" E9 C2 L+ _+ j  n
    #    listen       443 ssl;: H- n1 U) g2 a- P
    #    server_name  localhost;6 O0 m/ t/ t6 g# o; L
) a* V! T. d8 {1 t% u$ V
    #    ssl_certificate      cert.pem;
! g9 k! Y& v) a7 M  |7 `    #    ssl_certificate_key  cert.key;7 Q9 J  u2 w: \! a4 q2 ^2 \
, w0 E9 [# n2 U4 A! S
    #    ssl_session_cache    shared:SSL:1m;
0 _# Z; n$ z) j+ v, o    #    ssl_session_timeout  5m;  c1 t( p" Q' k/ O, u. p
: S* U. T8 N# p/ V% \1 U" C
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
4 W* Y# e8 T, \$ s    #    ssl_prefer_server_ciphers  on;
) j$ d# Z. H8 z4 {7 F* t: W- @' N0 j3 o
    #    location / {
9 b7 t. w( K+ E    #        root   html;
5 w$ ?. Q, U  {3 J    #        index  index.html index.htm;
$ X* n, b9 Y, y, `- x    #    }
' P8 S7 M$ L4 S) J  c. I- y    #}2 j/ U& }; }/ r+ h4 j$ W
& z. j4 B- o3 U2 a! \
}7 Z# v0 P' \* T" L. B# {8 E* U

/ N+ X# p- |: }4 ?" X, A

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

txp@ubuntu:/usr/local/nginx$ sudo mkdir demo_conf
2 ?# v( i& H* }: t; ttxp@ubuntu:/usr/local/nginx$ cd demo_conf/
* Y2 T& W6 j8 c; Vtxp@ubuntu:/usr/local/nginx$ vim demo_conf/demo.conf
* A( H# E# p9 u  y, k5 Y# x4 M
worker_processes 4;#进程数量
% I' D+ `; Y6 P$ T, N" f- ^5 [5 x+ G3 r: n# u
* T& f" H) r' m$ E- }
events{
/ v  B. S0 z5 E' B4 h        worker_connections 1024;#并发访问数量! O) z6 }9 e, M: S6 n% Y1 k) c7 f( v
. Q1 e0 F. H9 X9 e- f6 @
0 g% ]. i. w9 b( }6 @. N; p, u
}
: p- z" ?# V/ @$ G; t! yhttp{
$ B2 t& x0 C  V3 u2 {, ?        server {+ n: ^& l; U$ `! \( R- B. ~* p% R
                listen 8888;#监听端口* l6 C/ J! d& |: b, a+ i
                server_name localhost;#服务器名称5 n( h+ Z% r0 p# j+ c& b
6 X' K9 y' ?. e8 h( e  c% D; I: h" ]
                client_max_body_size 100m;#访问的数量大小* e- h: Q" V. v0 l1 ]) W
* }+ P- ]5 P- A/ ~3 F
                location / {
5 d5 g) K0 N7 j5 V' i+ W                root /usr/local/nginx/html/ #访问这个本地服务器里面的这个html页面
' \" V# n( V; m5 Z5 D% O7 a* `9 _/ J3 ]9 c
                }1 \$ P/ U$ t# e- m0 N9 m, c. n: d
        }* u8 b& v/ Y- _
9 v* J5 B' N$ s) L
}
- v5 ]% `. @6 |, x! q7 |) V$ Z, v

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

./sbin/nginx -s stop, u  H7 [# S  s: K6 h. r2 u

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

./sbin/nginx -c demo_conf/demo.conf0 L  a4 P' S2 C/ c( F

微信图片_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;
. y7 h7 o  }& |# e, X% @& h; m5 v0 f! ?1 _

- M4 `: v5 R5 M* I. _events{; F& k- H. Q5 y
        worker_connections 1024;" q; o: ^& [" G5 \( W' r3 j& {

! }1 p) s$ F3 R" i5 [6 f/ F1 H6 l# e. U; O
}
+ _" c0 |! S( k3 k+ i; w$ e6 N' Ehttp{, a! }: z; ~. J0 A- V8 c7 n) C  V# Q
        server {( i; ]' S2 \- o5 `# _* B* R
                listen 8888;! D* ~0 r7 I5 ^# v
                server_name localhost;
/ w& o' J2 j) Y3 }5 [: k) M$ {2 P5 J1 h6 M; O+ I+ z3 }
                client_max_body_size 100m;
7 x% D$ K! C- k5 b- a. v( h: @0 {% ~9 G# O2 I
                location / {2 I- m, f+ K, c1 ^6 I) \
                root /usr/local/nginx/html/;
4 v* w+ x- l2 Y! q2 f; r) \                proxy_pass http://192.168.29.141;
' T+ h2 C, ?" |# i! U% V! y                }" I) x9 w; X# c8 t" _- d
        }
, @) P: a2 X% N* C7 u/ k+ w( p; G
}, f2 Q% Y# K/ y' e, q, a: X2 R

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

微信图片_20210301151054.png

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

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

worker_processes 4;- m% j! g* @* ~! e0 a, v
0 C6 k: c0 L% v5 S  F( s6 P2 Z
( g9 s( Q# y: K2 `
events{8 F( U# ^0 I! S) d( y
        worker_connections 1024;
1 K- h4 o. h1 `7 [( f8 r* ]) A) O4 q# K! C# W2 U* {" O7 x; s. ^/ d
9 ~  D. N( M7 m- H$ f
}
5 W! }! r# s* [  X% W$ Yhttp{
& q: a! c5 h( Y' F$ J        upstream backend{% }- D/ H& J' ^5 F
                server 192.168.29.142 weight=2;//weight表示权重5 F5 m# l$ Q  R( X2 _
                server 192.168.29.141 weight=1;
6 s6 @; P% e7 _) e$ d        }$ F# D* E7 N" W1 g+ ~. r6 ?+ i/ x
        server {1 r( _/ E- |# I3 B. k' W, [
                listen 8888;
3 U" ^# v+ }1 g                server_name localhost;1 s8 p* P# J  T/ h+ G4 S

( K, n& ]# m$ G$ v& S8 |9 i' T                client_max_body_size 100m;4 A" Q2 O0 x/ {

9 S/ X, K* z1 T, V. ]+ C                location / {+ ^9 m: m/ s: i
             #   root /usr/local/nginx/html/;! V$ I, `3 _3 A$ I8 m( S0 W% t
        #       proxy_pass http://192.168.29.141;
# K1 n" V' ^' A                proxy_pass http://backend;
+ O5 x; J9 b3 O4 P+ ?; K* k5 P, T4 {                }( l# c4 a0 c% {* b0 I( H/ S
        }% Z, |+ p: w( s8 L; B  r, r
8 E$ I3 q3 C( T, @! G( h
}. g) o; r7 Q2 J- I& G- p6 y, U% ]

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

微信图片_20210301151057.png

微信图片_20210301151100.png

+ o- ~" O. ]- G6 |& W  T  K

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

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

root@ubuntu:/usr/local/nginx# ls2 A1 i* h& _+ ?; d% n
client_body_temp  fastcgi_temp  images  proxy_temp  scgi_temp   vip_conf4 G8 Q) n( U6 x1 v7 W
conf              html          logs    sbin        uwsgi_temp# ]$ d: e) i' y6 `

7 n$ s' g, e9 J. {, T( xroot@ubuntu:/usr/local/nginx# mv /home/txp/share/nginx/*.png images/
( G% G9 Z' e! M- H0 Kroot@ubuntu:/usr/local/nginx# ls5 Q8 j; I- d$ Y+ X
client_body_temp  fastcgi_temp  images  proxy_temp  scgi_temp   vip_conf. V& p: t! A: M3 f7 o6 A$ s  v
conf              html          logs    sbin        uwsgi_temp1 F$ j. J1 a' q- w5 m
root@ubuntu:/usr/local/nginx# cd images/
: Y$ z! Z: d3 ?. U) \4 d' F% Kroot@ubuntu:/usr/local/nginx/images# ls. D7 Y1 Y9 @( L0 @& c$ h& p0 I+ n0 Z0 L
1.png  2.png  3.png
. I' O9 b- a* L) z5 p

然后进行conf文件配置:

worker_processes 4;0 J$ X! Y3 E2 p; n/ f0 t' ?9 b* e
/ P1 {' }" n( x9 ]

8 ~- K9 t+ T0 T& B" ], Uevents{& L% g! K6 H' G. G! x) p9 ~
        worker_connections 1024;
' @2 i( Q3 W* K$ |3 T$ u6 ]& p
% ]4 {) G0 a. c7 W# i1 y: q$ @
}" D$ C! r2 h4 L% e/ P+ S
http{+ J" n0 J( F; _$ |2 |+ _
        upstream backend{
% c, M0 ~9 J7 d  ^6 h5 s                server 192.168.29.142 weight=2;
$ S7 T- s- m* y                server 192.168.29.141 weight=1;) f5 f0 J: M) n0 p+ U; u
        }# y7 o6 g! N- A' `
        server {
* A; H! R* p4 M" t( v6 A# v, {                listen 8888;
! o* ]1 K1 r1 G" v' V                server_name localhost;# J* ~! o. l/ v6 D4 z! V

8 k5 S" ]1 W1 t  ?- O- s% p                client_max_body_size 100m;' c, L% ^% ?5 Q4 C! O0 T

  m- k5 k, Q) l+ c% F0 T                location / {
9 H5 j/ K/ O. t4 P* _  x; A5 m             #   root /usr/local/nginx/html/;$ ?* W0 i+ a1 D0 T4 r7 |' H
        #       proxy_pass http://192.168.29.141;, U! Z/ S; E% y/ @' j" ?% m
                proxy_pass http://backend;4 R9 x" d9 x" C! W, i+ O  ^
                }
' _, s) ~$ z; x9 K0 z! A: t0 F                location /images/ {
6 U9 E2 x" B' c                root /usr/local/nginx/;
5 f; H  y: b% t$ V$ V                }! R( {) l0 p$ O( c1 x0 B
5 _5 B. d: D) _- h; i) v; }
        }( Y' H) c) I, Q5 ^% G# R
}
. V$ ?9 s2 u  ?3 ^+ [

实现结果如下:

微信图片_20210301151103.png

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

root@ubuntu:/usr/local/nginx# mv /home/txp/share/nginx/test.mp4  media/& T+ q8 Y1 V0 f5 V2 d
root@ubuntu:/usr/local/nginx# cd media/
' E2 W5 r2 z" \, _1 f+ |root@ubuntu:/usr/local/nginx/media# ls$ J) y. `. ~* m
test.mp4
' z. M. g+ a# |' e9 o# b

conf文件配置:

worker_processes 4;
$ y* e! m, s* J( H, W% K: e2 a& b! f3 W/ ^2 z( r4 K

% o8 i2 `" q" |$ J% }2 Xevents{* c9 ?: q; k) `! o0 O
        worker_connections 1024;8 g' u; r! B5 C) @0 v+ b, u. y5 K

2 H9 J6 L* N# s. q, i. i" f/ ]
2 _" L1 c2 j: z}
8 Q) ]6 T/ |# x% \' S4 uhttp{7 d' B) s4 p7 I) H5 w2 `$ p
        upstream backend{) N4 J$ u6 Z1 ^. \
                server 192.168.29.142 weight=2;' m( u9 w' M) _) p
                server 192.168.29.141 weight=1;
8 a# A7 r( N0 s) A4 @/ X$ ^        }) j" z7 q4 F0 {6 O' W+ c  f+ b
        server {
" X) |- w3 m0 E2 k. e9 v: q4 p                listen 8888;; l9 E2 Q& b  b+ \& y
                server_name localhost;) d7 C3 a: Z" x7 x

) T1 Z" ~( `+ h& `0 z( I                client_max_body_size 100m;
, {/ k+ R3 ^6 I7 B3 U3 n) H+ V5 `% D$ G$ l3 n, a
                location / {% g# D* C' g3 h% C* j9 I
             #   root /usr/local/nginx/html/;  e" b9 T5 \! \
        #       proxy_pass http://192.168.29.141;8 W( _, }) ]6 n1 L- |
                proxy_pass http://backend;6 ]6 m" j2 F6 `1 w* V4 ?
                }# m! I' d/ _4 I  B  K
                location /images/ {2 ]1 x1 L7 n5 O& f, A
                        root /usr/local/nginx/;4 S6 e" e9 A$ J/ S
                }. R. w4 p+ Z) s% l3 a
                location ~\.(mp3|mp4) #这里利用了正则表达式2 g4 D/ I0 y4 z% R
                        root /usr/local/nginx/media/;
; S: B' u) D9 g/ O- g/ G                }
: M+ z: T0 D8 w5 a% p8 _3 V$ ]6 o. U$ d: ]
        }% s$ {4 m; t  u5 @* ^
}1 C  G- P5 T* Q4 i* n1 L" ^6 a# h

结果如下:

微信图片_20210301151107.png 三、总结

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

tu18879499804* T, t6 U. k1 e

站在巨人的肩膀上:

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
( \$ L% s  v" ~- b4 K/ U! t  {$ Q5 y$ d: @1 k6 C4 _& v3 f0 p
https://juejin.cn/post/68449039442677596241 K! R$ h7 w: ~: U/ {- m/ l

+ l5 E1 H2 E, M$ W; @$ _https://ke.qq.com/webcourse/inde ... 5285890803239999870
7 J1 C& R- k. h! M% [
收藏 1 评论0 发布时间:2021-3-1 15:16

举报

0个回答

所属标签

相似分享

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