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

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

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

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

微信图片_20210301150947.jpg
微信图片_20210301150950.jpg
微信图片_20210301150954.jpg
4 s( D/ i( @, _. i# X
还有音视频接口和解封装框架,我差不多快捋顺了,其实之前很多人问的接口,完全可以去ffmpeg官网查文档说明,而且上面还有很多的demo测试案例说明:% h  V; ~, x1 i& t$ A- Y: W+ l
微信图片_20210301150957.png
差不多下周开始继续更新音视频的学习笔记;

9 x$ U/ }' e5 p/ b( j, X+ X
今天这篇文章呢,主要是总结一下过年期间复习的nginx负载均衡一些配置简单的实战演示!
二、nginx的常见使用

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

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

我们先进行源码所需要的模块& I4 n2 U3 y- r' J" U' n

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

8 A# c4 A! |. v$ m$ i
对应下载地址:- M! }& B6 d# F" Q* i
wget http://nginx.org/download/nginx-1.13.7.tar.gz
4 A5 w, ]: T# _+ gwget https://www.openssl.org/source/openssl-1.1.0g.tar.gz
* l- {3 _4 g# g% n/ l" N$ ]% Zwget http://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz$ r4 f7 w% J: z/ ^1 f$ W
wget http://www.zlib.net/zlib-1.2.11.tar.gz' `% J  |  S* }; P; j9 E

0 X0 L+ Q- ?, S' @
(1)解压nginx:
微信图片_20210301151008.png
(2)解压openssl:
微信图片_20210301151011.png
(3)解压pcre:
微信图片_20210301151014.png
(4)解压zlib:
微信图片_20210301151018.png
微信图片_20210301151020.png
. u% _8 X6 O7 B* k

' l( E$ e: m& d
(5)进行配置,先进入到nginx里面去,然后执行下面语句:

; J+ ]9 x& a; c3 D5 u5 a
微信图片_20210301151023.png
./configure --prefix=/usr/local/nginx 3 H1 K: t4 J* Z( Y; G- M/ J, i
--with-http_realip_module
$ l7 t5 c9 ^0 J* E' J. a& Z+ Y3 G--with-http_addition_module* h. o' K+ i0 `3 N3 H
--with-http_gzip_static_module
; N  Y6 J8 H* x& L0 V- Z4 p' f' m- w--with-http_secure_link_module 1 l/ W, ]. ~3 Z3 \# ?
--with-http_stub_status_module- g4 `& @  ]8 b! h
--with-stream  x  r% j  g$ _) K; [0 v2 r# h
--with-pcre=/home/txp/share/nginx/pcre-8.41
* n! h: B# ~, w( n--with-zlib=/home/txp/share/nginx/zlib-1.2.11 9 q9 r3 R9 y; ~5 q. i; b
--with-openssl=/home/txp/share/nginx/openssl-1.1.0g
) e+ u: b$ W* Z; g, J  N! k( s4 z4 r" ~+ j; n# t7 X
然后直接make:
0 i* p, w8 k4 c( C) ^$ F& _1 r9 q
微信图片_20210301151027.png
4 h# d- W* T; B
然后接着再sudo make install:
微信图片_20210301151030.png
最终我们可以看到在/usr/local/nginx/目录下看到安装的nginx:
微信图片_20210301151033.png
现在我们可以试着来运行nginx,并进行访问(下面的访问成功):
微信图片_20210301151036.png

5 ?/ m8 B& d3 o. E9 O8 N

" `& z" ]* {: E! q

微信图片_20210301151040.png
" x. C* V) V6 M( |, C2 G" x


2 A4 @6 U5 X" p, T7 @  K

这里小结一下:

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

-- ./cofigure

-- make

--sudo make install

2、自己写conf文件

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

root@ubuntu:/usr/local/nginx# ls
  l" [/ |* m7 z- q, z. b9 `client_body_temp  conf  fastcgi_temp
1 R- \0 r9 X2 F5 C" ^# Hhtml  logs  proxy_temp  sbin  scgi_temp % [4 J2 M! j9 [0 `
uwsgi_temp
: B, O/ m' j+ z# S7 _( H7 C/ a0 Z  j' i4 o& n" ]) z- s

这个文件原本内容是:

#user  nobody;
6 A- E4 O8 o* |, \worker_processes  1;
* n& b& Z0 a& s7 x* D$ h3 k: }' v9 D7 V
#error_log  logs/error.log;
. i5 m; Z% d9 p2 n* y2 ?#error_log  logs/error.log  notice;0 @, |/ e4 d. [) ?
#error_log  logs/error.log  info;8 d/ d; F: c6 {7 A7 z

0 S* O2 @, U$ v% L2 V( M#pid        logs/nginx.pid;5 ?0 W4 A' L7 X& ]

! L0 m& Y2 [- V, [8 a; L" Y+ g$ P1 m6 M" E/ c* M: N
events {3 _* p1 M2 Y/ ]" D
    worker_connections  1024;" r/ v- ^$ }: L0 r( O
}$ K  U" l% h* G- I1 Z1 D
* m! m+ W! }/ P

5 e5 t1 }/ u( U  t$ h) rhttp {3 p( r& v# R6 I( O% p
    include       mime.types;
" P+ \- r8 |/ h- A* S    default_type  application/octet-stream;4 L! o( z$ ]( m2 E2 O, V( Y! J$ H5 C8 T

/ W% a- E9 W$ d* L0 q    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
4 V$ w, c" N! k    #                  '$status $body_bytes_sent "$http_referer" '
- t6 ?% N( \8 v7 N0 r$ l" S    #                  '"$http_user_agent" "$http_x_forwarded_for"';
4 T, ]6 \; `2 `& K1 {( r( }# W( O1 x# z6 T. W9 s& I
    #access_log  logs/access.log  main;+ G$ X. P! ~. K' U- l5 ^
: x3 Y0 j' B9 X. J: ?( q6 }! E
    sendfile        on;
) U0 ]/ ?  O  `' I- y    #tcp_nopush     on;% ]% B( k7 K& }
/ Z; `- q1 w3 `/ P% c/ i
    #keepalive_timeout  0;
2 g. O# U* D( S    keepalive_timeout  65;
  i/ B4 w  d6 m; y" W1 J
; H) X+ A. Y1 G6 X# x- _/ i    #gzip  on;
/ P% x( U7 U' C( e6 F* z# y
* A0 g2 L" P7 ]: j% ]# g    server {
2 `$ v  U5 ~# `        listen       80;
8 V7 h! H% ^' T3 v! M        server_name  localhost;
7 q3 \* y+ ~8 L) O, ~# S7 K
) n3 w$ E" M1 A! D5 d' O+ u* S        #charset koi8-r;
3 N, V1 O4 D  ?7 P) G$ F: O! H: p0 L: V2 ?) F% J5 C$ U7 t: H
        #access_log  logs/host.access.log  main;
% {' x% u9 a: Q6 d. j7 C" q# x+ k- ]  U! E8 [9 A
        location / {
% r2 i) ^5 p) V            root   html;) ]; P* z# t! l2 q- I  ?
            index  index.html index.htm;: [3 r5 Q, @- o& }3 U3 b/ n8 Z) z( g
        }
3 `. f3 P$ a9 `3 o, [5 s7 q  Y4 a% l
1 L5 C( [2 F1 S+ W" O  P        #error_page  404              /404.html;6 J& ~4 n1 S6 O8 c* F% J, C6 F
1 T6 d0 {' _' s7 p
        # redirect server error pages to the static page /50x.html8 O, Y2 ?1 a. ]1 Q, M; M* z4 j
        #2 J& ^* X7 o4 \  f3 o. `! n; p7 _0 b
        error_page   500 502 503 504  /50x.html;1 K8 ~4 L% j0 w! ], `
        location = /50x.html {5 `# }9 @  E4 i0 W! V! ~" x
            root   html;
6 O: \+ N: j% N: W9 h        }  q5 d  s1 p3 a' }; I
9 U/ C$ f% t3 r+ }2 `4 {9 U# b
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
& `( t7 S2 }9 o; q. a, K+ T        #) C: K/ Y9 N% d' f7 H
        #location ~ \.php$ {
& w" \+ x* h2 K        #    proxy_pass   http://127.0.0.1;
+ T3 M$ y. T* o- G+ v% r/ G2 k9 |  E        #}
" y) @* H2 S% |8 k  W, h7 y
/ @" u3 V1 X" T3 z# Y- N$ G        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000& _7 @- |8 J4 `4 ?' F9 Q
        #) e9 x( ]. ?8 @' o! Q
        #location ~ \.php$ {/ m- j, k, k' Y  Q
        #    root           html;
2 y! f0 S# T$ X% W% R        #    fastcgi_pass   127.0.0.1:9000;
. T0 d. o8 q* h" c. E& T5 v( h+ a        #    fastcgi_index  index.php;
! u" x$ S4 ^. I0 h) k- N9 N        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;( s$ r9 `4 |- k" b
        #    include        fastcgi_params;
, O3 `0 e6 I0 u$ d6 u  \        #}
; S0 @3 A, r5 R" F7 N# K- y$ w) H) p4 ]
        # deny access to .htaccess files, if Apache's document root
- E& M5 [- A& D) W# f        # concurs with nginx's one
6 Y& ?8 A8 l: o8 L8 ~" u        #! D( v! I8 M- U' k8 _
        #location ~ /\.ht {
1 i4 e1 U; T- F0 ?, \2 t        #    deny  all;
2 s, h. s0 s  L6 g        #}
) b0 P: U- B1 F+ I3 K, V1 g    }( n% f+ T! X& e) M

& E5 c4 ?# v! G% y8 o- x4 g4 W* o% i; P  x2 a
    # another virtual host using mix of IP-, name-, and port-based configuration
0 [- P7 k$ T6 Y$ m* k% |+ u    #
* D+ g. S  i- a" n( Y4 U+ E& H    #server {
, x- q) I& A9 h) f    #    listen       8000;2 E) B9 V3 d% I# S" B# _
    #    listen       somename:8080;
+ g9 V$ P3 g' \6 y8 @    #    server_name  somename  alias  another.alias;- h9 z: I1 X7 l# \( g1 [+ x

' A1 B) [0 i2 V7 F6 ?    #    location / {9 n  ]1 x7 h( y' T, d" I7 w
    #        root   html;/ T) C4 v8 @9 Y4 V/ n. ^( w6 C3 T0 R6 a
    #        index  index.html index.htm;8 \2 j( L( L& o/ b9 M$ O5 J, l
    #    }! m1 x  f' \/ d; m! O: l- Y1 A: T; ^
    #}; u2 W3 }) F: Z
1 J6 @3 o7 S% C
$ Y( R) M4 W0 {9 T, ]( {
    # HTTPS server( v# |4 J8 n9 y& z/ ~
    #) l/ X" y& D+ o* }( N
    #server {1 z0 h; [" I! M: D( B. `9 ~$ N: g
    #    listen       443 ssl;
+ D' D" U" d8 R  p    #    server_name  localhost;
- w  N8 D" b' ~, C: U0 f
2 C8 t" }( f$ g$ C    #    ssl_certificate      cert.pem;) U, B5 S) ?1 }. ]
    #    ssl_certificate_key  cert.key;
5 a$ I: [9 P* Q/ X" p1 r2 l+ C, f) d' I
) `( u& s; f3 |! A" D- P    #    ssl_session_cache    shared:SSL:1m;& h* U* L3 ^* Q1 a8 D
    #    ssl_session_timeout  5m;0 S; ^- ~; @0 U4 |( i8 Z

' _- F" u9 \0 U- a# c    #    ssl_ciphers  HIGH:!aNULL:!MD5;2 J6 Q- T; h+ H7 U
    #    ssl_prefer_server_ciphers  on;
# s7 L9 Z$ V9 p. d* u4 z& `4 r" t; p4 E, S+ n6 _
    #    location / {
+ ^; h; d. M8 V8 \, e# W    #        root   html;
3 L5 ^, k: _$ u2 f, d& P0 d$ X    #        index  index.html index.htm;
: i9 \% d+ n1 k6 v    #    }: b$ C8 W6 G2 Q& m: u6 a* m
    #}
' G  I; z/ `3 e* U2 A% H5 A
( C( f2 W& n8 o( G2 F5 i! H}
' A. P3 |( ?* _$ V9 S, t
. |4 N6 H3 K5 g/ V5 ~! ^

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

txp@ubuntu:/usr/local/nginx$ sudo mkdir demo_conf
/ [% L( c6 n  v$ s+ p# ctxp@ubuntu:/usr/local/nginx$ cd demo_conf/' K; z$ P6 S" r" `8 |( h/ d
txp@ubuntu:/usr/local/nginx$ vim demo_conf/demo.conf# s8 I  y4 f( O% u2 H% i
worker_processes 4;#进程数量4 E2 a" r! b3 c& C6 Q# U, K, r
8 y* [( b% z( T
6 {: T: ]8 L4 g, f
events{% u+ J+ d1 A! v1 _6 Q
        worker_connections 1024;#并发访问数量
/ p8 \' q+ d+ y7 ~5 n4 _9 N5 _# x" v2 X8 b

3 `* |5 J: J7 `}- c' \% A* Q" D1 o
http{+ F' C2 g5 h* c+ z0 W4 [
        server {6 @2 Q% H6 g9 C3 ]! d3 U8 a- L
                listen 8888;#监听端口; j) a$ b) j7 r4 U
                server_name localhost;#服务器名称- \+ u0 R8 D! o3 U7 F
' T% C7 j/ D4 \! B1 M( o) V
                client_max_body_size 100m;#访问的数量大小3 F  Y  q, g  o8 T( E. I$ N
1 N, {1 L/ Z, l
                location / {
$ R9 b: q# b" t                root /usr/local/nginx/html/ #访问这个本地服务器里面的这个html页面5 Y- T' O" n  Q' U, `% g/ v

% J, r% h9 r& \: ^. Y+ H  O; l$ g                }# X; w2 H+ g) D
        }
$ A, M1 R* B/ ^# c
7 t2 p$ n' f" [3 ?}$ K* c6 y* k  r8 N9 z

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

./sbin/nginx -s stop
2 s( c: i1 _; p4 R, j

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

./sbin/nginx -c demo_conf/demo.conf
" y( ?9 ^. g3 ~% f: r+ D6 N

微信图片_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;* M8 c' q/ [% n9 ]" z) K

8 @# ~2 L( T( ?. z' g- A! V1 c, A( p5 I
events{1 D  T4 u5 L8 p/ i# s
        worker_connections 1024;
/ U7 z0 }8 S$ D5 l: M
+ L( m1 ?. n: q9 _; n; k
0 r2 g* @% _9 j4 U! o7 X+ k+ b}9 z( u+ N8 }: V3 `
http{4 q- f5 J9 n5 k/ y0 T. l
        server {
/ `" Z! `) \) c: n( P, N* c0 F                listen 8888;0 r( Z2 K: x/ G/ J
                server_name localhost;
# Y* H- {0 s( l3 f: B* l
: k2 [( }) L  a5 D* ^                client_max_body_size 100m;0 G2 |$ x" O* e. g; [/ u6 ?) B6 u( }
' s, J% l3 J  N7 M# s
                location / {# O9 D" {) |" o% ]4 h+ }6 {
                root /usr/local/nginx/html/;
! Y0 u4 ^2 O8 b4 y# Y( x3 e                proxy_pass http://192.168.29.141;+ R2 N9 h) N! u7 `5 k
                }8 a6 N4 v% L, N$ o6 E9 p
        }& s/ {. t3 Q! K" C% v) [5 B
4 _5 Z2 O/ F+ [  J# M
}: d6 {, H8 B5 O& w( x9 v

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

微信图片_20210301151054.png

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

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

worker_processes 4;
. r9 t( o6 c# J% }1 i% p
2 Q7 y' ]# |- q( B" _  M5 ?& D/ u. {! r* W% A" E
events{2 \% I- E% r) M+ K9 U
        worker_connections 1024;
$ K& W& h- n) B8 _+ f( G. e
$ w& S* O! B6 N/ N  ~5 a* u4 y0 ]. |) }; h
}
. }1 m. z4 _9 d+ ^  z/ B  Ehttp{
) T1 Q2 I! f: p8 ~        upstream backend{
0 G: f! B( R( b9 j! v# d                server 192.168.29.142 weight=2;//weight表示权重. y" m# o0 ?9 r* ^  M6 J/ }
                server 192.168.29.141 weight=1;
6 @' _6 s. V. C4 B0 j) i        }
- a$ w% ~0 z( k1 U        server {5 p: X4 P6 i$ o* b, O" x
                listen 8888;6 \0 j3 r3 d% M
                server_name localhost;6 C, m* P4 a9 e
5 ~2 @* B* v* I% F$ q% }3 S
                client_max_body_size 100m;4 |3 c9 {2 _( N, V/ [6 N! o! I

1 b* G: T8 k) h( j' |& ?                location / {. @6 j# X9 |. p  e; x$ U# ]
             #   root /usr/local/nginx/html/;3 G! }# ^7 {& Z& A  V$ ^. t
        #       proxy_pass http://192.168.29.141;4 m$ C' D5 x4 n3 v6 D& i
                proxy_pass http://backend;
5 u' s9 M  F- c# h' l3 B                }
  T1 t$ f: g2 [        }
! M3 `# L7 o. a
, q8 _2 H# o1 c& S5 I}
. y* ?: d! c% Y2 n

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

微信图片_20210301151057.png

微信图片_20210301151100.png

, }8 t, N- F8 s+ y1 F. Y+ k

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

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

root@ubuntu:/usr/local/nginx# ls* b8 X) I; i1 k- O% ]  `) j! i
client_body_temp  fastcgi_temp  images  proxy_temp  scgi_temp   vip_conf7 A8 ]7 W7 _& m1 o! O6 N; h- c
conf              html          logs    sbin        uwsgi_temp; a6 ?2 ?5 j* O5 p5 E& R

6 h! z+ P3 D2 ^0 n$ b( nroot@ubuntu:/usr/local/nginx# mv /home/txp/share/nginx/*.png images/
) W  v* h$ ^  q1 J* A% Yroot@ubuntu:/usr/local/nginx# ls1 H8 {) _9 y0 j4 J4 Q! i5 _  X* n
client_body_temp  fastcgi_temp  images  proxy_temp  scgi_temp   vip_conf0 i+ V4 j" n. l2 @8 w
conf              html          logs    sbin        uwsgi_temp8 y3 j+ n. s+ }" k1 X
root@ubuntu:/usr/local/nginx# cd images/
- s# G1 }9 K$ ?: f9 \  S- Iroot@ubuntu:/usr/local/nginx/images# ls) K. s, O: x& c' g) ?1 ~
1.png  2.png  3.png9 z' p0 L; Z4 q, Z

然后进行conf文件配置:

worker_processes 4;: Y' m1 ^% q' `# {( \( u6 ^

* S0 G5 K: }9 ?* @) x: Q
% ?7 v3 N! Q* Q7 H/ L1 Tevents{
6 f: L2 F7 x, o        worker_connections 1024;
- t) r6 C2 v! [7 x1 w! x! @$ }- t# M$ |: U0 P2 [+ ?% N

9 _2 f7 Y/ w* z6 \  y7 ~6 S; T}
& j1 L" S# f' ^/ Jhttp{
: I8 e' s; ~. Q* C% ~/ }) N        upstream backend{
6 M. n2 `5 i1 |  N2 o                server 192.168.29.142 weight=2;
' }3 K8 D0 X* ]# m8 R                server 192.168.29.141 weight=1;# V: ?, S* t6 L( L5 `8 W
        }1 t+ m; f+ O" J9 n0 J& o2 K, m+ C: s
        server {7 f! D* W) x# q2 y( D
                listen 8888;* H# u  K! m- a% [' Z
                server_name localhost;
8 h, Q5 a& ?. Q6 M
  ^% b( f! {5 k, o' \                client_max_body_size 100m;( W6 N9 }. A  V' R3 c7 P1 r

* H7 ]5 L9 q! k: h# L& j9 ^                location / {
% U1 a# i' i! j% `* m0 }             #   root /usr/local/nginx/html/;
- `( A+ y6 r* Q$ [' k) F+ S        #       proxy_pass http://192.168.29.141;$ N: v: \0 l/ j& W
                proxy_pass http://backend;
1 T* I2 x) I' u( c4 q7 k! y                }
! Y) N6 Y3 V5 s+ s& ?% `# c  o                location /images/ {6 n- A: i% B( D6 O4 [
                root /usr/local/nginx/;; L. |2 l% d) G
                }; I/ |; b2 {: v# @% D4 m

" Z0 r3 x% v' [        }
1 m9 s1 e: i5 r}4 H! v) ^3 `7 S, u, y

实现结果如下:

微信图片_20210301151103.png

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

root@ubuntu:/usr/local/nginx# mv /home/txp/share/nginx/test.mp4  media/
. m5 W, Q, T; i' k, \" Q- |( [. c. Groot@ubuntu:/usr/local/nginx# cd media/- t7 z6 U8 B- A( f# n8 b  I/ H5 d0 Q
root@ubuntu:/usr/local/nginx/media# ls5 c- V0 X3 M6 A3 D8 L# u
test.mp4# o' {( {1 f, T# T+ [

conf文件配置:

worker_processes 4;
  J5 c# S) f5 }/ s  F' Z7 h. [) k+ @  P
) M5 t5 m6 v1 Y- R6 \
events{% ?0 l) e. V: t! c* f$ J
        worker_connections 1024;, p; c% |- F+ r0 ^7 c3 k

# r0 y& H. V! S6 s+ W, ~
$ ^4 Q! e2 c. B}. C  @  U6 r" Q
http{4 o% W. z3 z* l2 n$ V- T1 o: U
        upstream backend{
* x7 E1 }" }: _% u1 o                server 192.168.29.142 weight=2;7 Y% c1 N7 k/ I% i: c1 u( q
                server 192.168.29.141 weight=1;' Y+ K4 Y# J7 t- z9 c
        }
$ R/ g& s. d! P( N        server {
- ]+ W5 ~1 U; M( u& g. B                listen 8888;: A0 s" F* ?0 b. g, e( I6 P
                server_name localhost;
2 x4 @- S. L; V/ a* e# S0 _0 O1 j; r
                client_max_body_size 100m;; _+ s- ]: G  |' [

0 r( A) M7 U3 t5 H+ ^                location / {4 G' T# X1 }7 o& P4 i! z% S
             #   root /usr/local/nginx/html/;
* D7 c9 ^8 j2 p4 f( o& b9 U        #       proxy_pass http://192.168.29.141;- V- f0 Q* w+ `! I4 I
                proxy_pass http://backend;
. k- u1 E- x# T; `" P                }
; K9 y8 I8 Y( d4 x2 f                location /images/ {! l% i6 G7 X- t2 o9 r, H. M
                        root /usr/local/nginx/;+ h) j; I$ }1 W5 e. O& Y
                }! D8 z  J, T4 ^! n3 h
                location ~\.(mp3|mp4) #这里利用了正则表达式9 I- j, U% e( }! F0 a
                        root /usr/local/nginx/media/;
$ x( _3 q5 @8 c) d8 `# B                }
' i4 R. x# B8 C6 |% A5 i: d- c2 o2 C9 A) P! l. C0 _' M( n% V
        }) D- U. n1 e8 E8 ^# p* f9 d
}0 H4 w% E% c5 Y; @* |; a0 j# B

结果如下:

微信图片_20210301151107.png 三、总结

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

tu18879499804
) e- h7 s9 s- y4 j' F

站在巨人的肩膀上:

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* o; }* |9 ]  C
) p1 H6 `5 y4 @) c7 f1 A
https://juejin.cn/post/6844903944267759624* |, S  C; n7 ?" \0 @. m

8 S$ f2 Q# O+ I1 {https://ke.qq.com/webcourse/inde ... 5285890803239999870

2 r& O3 Q/ o  n1 f1 D8 a/ f
收藏 1 评论0 发布时间:2021-3-1 15:16

举报

0个回答

所属标签

相似分享

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