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

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

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

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

微信图片_20210301150947.jpg
微信图片_20210301150950.jpg
微信图片_20210301150954.jpg
7 h* a' @) x2 m5 N
还有音视频接口和解封装框架,我差不多快捋顺了,其实之前很多人问的接口,完全可以去ffmpeg官网查文档说明,而且上面还有很多的demo测试案例说明:# S$ F8 w* ~% c* k
微信图片_20210301150957.png
差不多下周开始继续更新音视频的学习笔记;
! [  ?% @3 s  D
今天这篇文章呢,主要是总结一下过年期间复习的nginx负载均衡一些配置简单的实战演示!
二、nginx的常见使用

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

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

我们先进行源码所需要的模块
/ n5 G) |, k9 |, J: h

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

  R0 A( H( l; M9 @8 s( l2 T
对应下载地址:
$ ]# v6 L1 [6 h/ M
wget http://nginx.org/download/nginx-1.13.7.tar.gz8 |& Z3 `  H! `/ X* O1 s1 V0 n
wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz
! F# o: f3 o8 _1 v% k4 qwget http://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz
8 D  `- N* Z, x4 n, D! Bwget http://www.zlib.net/zlib-1.2.11.tar.gz
) v  I1 Z7 A" E3 y4 G: \- p! S8 v+ m
7 x+ \" v& A* \' d6 [9 C; \. `+ t) j
(1)解压nginx:
微信图片_20210301151008.png
(2)解压openssl:
微信图片_20210301151011.png
(3)解压pcre:
微信图片_20210301151014.png
(4)解压zlib:
微信图片_20210301151018.png
微信图片_20210301151020.png
6 N# d: E  T, l6 a

! Z$ u) x5 w: Y% ^+ J, N
(5)进行配置,先进入到nginx里面去,然后执行下面语句:
" U. _( m* x# e( X& e; p* x
微信图片_20210301151023.png
./configure --prefix=/usr/local/nginx
0 O3 K, k( Z& }: F2 e( R2 n% ^--with-http_realip_module: H. o# r; Y) F+ O0 ]7 p
--with-http_addition_module  x  K4 c- t$ P5 O6 P2 U
--with-http_gzip_static_module
2 i8 [' ^, w9 H+ f8 G/ g( k--with-http_secure_link_module
: M; Y3 T; @9 e" Y--with-http_stub_status_module
- s6 h5 T. z0 v: C# }0 I--with-stream
* |! N$ [& W* g1 R--with-pcre=/home/txp/share/nginx/pcre-8.41
; S! @( }, V, f; p--with-zlib=/home/txp/share/nginx/zlib-1.2.11
* y2 J6 E- q( w$ C  y--with-openssl=/home/txp/share/nginx/openssl-1.1.0g; L% K# \5 @# Z) |  Y
9 M3 _8 v9 M1 V0 R& e* m* f
然后直接make:
( }, X9 o1 O2 J* D) g- \
微信图片_20210301151027.png

7 z& k- r- e& J! T4 U
然后接着再sudo make install:
微信图片_20210301151030.png
最终我们可以看到在/usr/local/nginx/目录下看到安装的nginx:
微信图片_20210301151033.png
现在我们可以试着来运行nginx,并进行访问(下面的访问成功):
微信图片_20210301151036.png
  a, {* k+ b/ O8 P


; m1 Q+ R- ~% x3 d% k# W

微信图片_20210301151040.png

8 }, B9 _/ Q; U7 L, c3 B3 h% Z# t! `4 L

: T" ^: f2 S: j( A4 ^

这里小结一下:

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

-- ./cofigure

-- make

--sudo make install

2、自己写conf文件

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

root@ubuntu:/usr/local/nginx# ls
3 }! z( Q: @% Rclient_body_temp  conf  fastcgi_temp
: }1 y* J; v- S2 `9 W- @html  logs  proxy_temp  sbin  scgi_temp ( d9 r# v# U: V9 i
uwsgi_temp
0 `+ K5 T6 |% D( a" K1 I* o5 f; H% V. A; r

这个文件原本内容是:

#user  nobody;* O+ C' Y1 u" y
worker_processes  1;3 W6 q# z3 Q/ V3 ~

6 l. |4 ~3 D1 z' W5 C5 M" o) h- W! S#error_log  logs/error.log;" ^7 g* h5 t4 m0 C
#error_log  logs/error.log  notice;% j( c: D5 S7 X% _  A  n( Z
#error_log  logs/error.log  info;1 l( e& n/ A& G0 a

: j  _/ ]6 k4 q#pid        logs/nginx.pid;
0 `' k  H& q8 ]; G0 [) n: P' h( g0 \9 c
* z1 i" a0 c& m% Y2 M+ T! y; b. H2 d9 @+ j4 w* L8 ^
events {% u" Y. W' u2 h$ |, O: Z2 L$ f
    worker_connections  1024;
# o7 k9 P  W+ r2 g1 b4 C# C" R}
0 S- N' K( n! v, s6 @+ M( s3 @9 ?+ z( P- [% l4 {1 l% K5 i3 O" Q

/ V5 S! k4 S; A# Qhttp {
; `) W* Q5 n0 \9 O: Y9 @  v& x1 B    include       mime.types;! w" c3 I6 U  c  U* y
    default_type  application/octet-stream;: i" F; }% ^' o

( a4 O5 {4 v, j9 I9 Q7 a3 ^+ t    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
$ w. \3 O) s8 I& J" a7 G    #                  '$status $body_bytes_sent "$http_referer" '1 ]7 T+ r& ]6 B( L. v
    #                  '"$http_user_agent" "$http_x_forwarded_for"';5 R0 f3 p4 N' [/ e; z! K" F  Q

' g* A+ K6 ?4 x- b# l    #access_log  logs/access.log  main;6 T1 ~8 T; f, m

$ ?6 |# S; q% s: m% k+ b0 }4 R  o    sendfile        on;5 N" n5 u2 i, S  H; Z  T; D$ I1 ]+ ?# v
    #tcp_nopush     on;* x$ S  d3 g1 T6 r
* V# {6 p* P  _4 d4 q! D6 Q
    #keepalive_timeout  0;
! |1 Y+ i& q, A! D; Q) X) i    keepalive_timeout  65;* X" o5 I5 ]( y/ v5 @
  f2 G/ L; B; n# G: i; V5 Y( ]# E
    #gzip  on;
& _0 r) B- K* Q1 ~" I
0 `$ p/ n: Y3 ~( o    server {
0 s, p" C+ i+ `/ H; N; B        listen       80;; \2 K5 h: H. m) [+ E2 k& v
        server_name  localhost;# z% Z4 _5 j1 ]# `$ |. }0 n; f

; t" R, r9 n+ W% h! a9 t        #charset koi8-r;
( ~' a; B' k2 [. t) @& [) A# f# V* g- u8 x. ^- s0 J- P
        #access_log  logs/host.access.log  main;
# s, A& \. y9 G4 p3 u, O* }  v& Y
7 Z) a' K' R8 E, h/ I& S        location / {$ }5 W- c  O# }
            root   html;* |' ~! N& J( m: H- l( C
            index  index.html index.htm;! e4 f; {7 `! d' A! C. B
        }
! k8 g' N* I$ z; o( l  Q5 q
' t( C. O0 O* E1 I, A) T' Z0 R4 R        #error_page  404              /404.html;
. E6 [8 T. B& j* s  k' e6 E8 \( M% C! t/ V% E4 z+ {7 M
        # redirect server error pages to the static page /50x.html
# H" i, b8 ^( s0 I        #
4 ~, Z+ s1 s2 W* ?' u        error_page   500 502 503 504  /50x.html;: @7 ~, ?5 u. \7 g% W
        location = /50x.html {
6 }" u& c4 J9 D$ v            root   html;
+ K7 y5 \$ I( N# R# X- E$ H        }  i4 V8 Z! K) V) x5 v

  k8 a! H. `% }: x+ g* B        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
! C4 w( C: Q( M, E! q        #3 i5 x, ?& m) |& ?; x# z2 Z, D
        #location ~ \.php$ {
. U/ d: h# Y, c! N! O        #    proxy_pass   http://127.0.0.1;% }3 R. S* Q- A; X5 N0 m" J
        #}- z* @- C' I9 C" ^  V. |5 L

6 K1 y  ]3 c  q- T9 z) ^        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
, e! I- K3 A3 P8 Y4 Z( H" `        #. q& k- H& d% p0 A
        #location ~ \.php$ {
8 A* x: b% _# i2 g2 R4 h        #    root           html;
) n# P7 Y) c4 }; x, S4 H9 i        #    fastcgi_pass   127.0.0.1:9000;
8 c/ M& {( M( c$ L& f        #    fastcgi_index  index.php;" T) p- m! Q1 f# p# \2 r/ T. i
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;4 F. @6 ], {7 q2 \; \
        #    include        fastcgi_params;5 a- W' S  _3 ?# Z, X+ @) b
        #}
5 ?3 G( I/ m/ x, R
. X1 f6 X# t2 E' d" x        # deny access to .htaccess files, if Apache's document root9 V9 P  a* q2 |% H  g
        # concurs with nginx's one
# t  w! G5 `9 o. l3 A3 _5 f        #
' r2 m6 ?+ b2 |, h& |5 D9 S' O        #location ~ /\.ht {
9 p( n9 ~3 l( Y, @. A        #    deny  all;% G. g+ A0 E( n# t8 z
        #}1 R# X1 |* m5 e. p( q( c9 ?& r" U; n( b
    }/ F9 P6 W7 b3 E  P; q( C& Z1 {4 ?
0 [2 E6 H  F% S  L; e

$ k) r9 p% N8 p5 a+ H  J    # another virtual host using mix of IP-, name-, and port-based configuration
2 U1 a0 G" I2 |8 ~- f5 @# R9 f1 z    #" Y" }  D; X2 q0 H
    #server {4 K# E: U' Y/ D
    #    listen       8000;
( }& n4 e5 g  f6 D& m  l    #    listen       somename:8080;) b5 A8 M( K2 q" P1 w2 Y( G/ |+ \
    #    server_name  somename  alias  another.alias;
( v" _' l, _3 t7 r
9 ?! u/ W/ U  x    #    location / {
6 f+ Z7 E% ?4 d9 s    #        root   html;  b# @2 g6 p. {' u
    #        index  index.html index.htm;7 v+ a5 {) \! N+ @6 P, p, \3 q
    #    }  U. G3 G: R8 F# V
    #}# c) }* |1 \7 Y' F; r/ j/ k( J" I( ]
% }( f! E" v* X1 n% @' d
; s# O; G" |7 {9 f2 U
    # HTTPS server: v/ A9 a8 e, \4 y2 i! `
    #6 C6 e$ _, W* f- _0 ?- j
    #server {% d) W7 k3 ]1 B! `2 d
    #    listen       443 ssl;
" ^; Z7 _" B, k5 |9 P) `, w+ y    #    server_name  localhost;4 G% e7 B! V( Y! h' f* ?
, _8 c& t: x- I; {, Z5 ^3 V
    #    ssl_certificate      cert.pem;- R  u2 b3 M/ C5 W3 f9 e
    #    ssl_certificate_key  cert.key;
' N3 h4 Y8 k& ]+ [3 \: G3 g
9 V; _3 C7 a* J    #    ssl_session_cache    shared:SSL:1m;+ u0 j, n% n% M# ]' j7 U0 o7 N1 v
    #    ssl_session_timeout  5m;2 ^5 \, E' X& |! [" M
2 G5 y+ y. j- Z2 L6 e
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
7 |$ ?3 A6 L3 r8 T    #    ssl_prefer_server_ciphers  on;
0 D/ r( z* h7 H  }: J' a8 I5 @8 J- ~3 ^3 z+ _5 A7 Y0 N
    #    location / {' t0 k! A5 M; q, K. U8 K. b  Z
    #        root   html;
7 ]6 {) Z' ]  j7 R* n' D) L    #        index  index.html index.htm;" l9 {% H. _2 z6 V* s3 r, L: i& G
    #    }" N0 ], R# f& O: v* g1 T7 h
    #}
- H; r; f& G) B1 X" C. g+ O5 e( X4 }6 X- g! ?
}; k2 d+ S8 x0 m/ X

% n" o) d3 B5 j) d; C( m

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

txp@ubuntu:/usr/local/nginx$ sudo mkdir demo_conf
% l; o  K1 `, N  m0 Q- c( dtxp@ubuntu:/usr/local/nginx$ cd demo_conf/* f, N* R2 C3 y5 y. x* {
txp@ubuntu:/usr/local/nginx$ vim demo_conf/demo.conf$ a8 v' D* x! o& x7 a4 S" f+ i5 ~. P
worker_processes 4;#进程数量
, ~6 E# L! ~; ?4 z, y! w: [! T4 V; r3 `# T) h9 B8 U) E

9 J* Z6 P: V0 U; }events{
( R, v( J# U6 b6 V$ c5 p0 R9 ?        worker_connections 1024;#并发访问数量$ q5 j) R' g, u$ b6 h. F, |

4 y# i* ]- `2 N* L9 d: y3 ?
2 ?! v2 Y% j! |2 A: @}+ z  s4 V+ |3 {
http{) ?; M7 U! F1 W: |1 Q8 L. ~
        server {
  `+ A5 ~9 G7 |& E! H+ H                listen 8888;#监听端口2 J( C; S1 `- A9 I# Y" Y: R' U) V
                server_name localhost;#服务器名称0 |# H; S1 O  Y4 o! L$ b

: D. V. g3 k# O" d8 r& w                client_max_body_size 100m;#访问的数量大小: ?% O. q7 V% ]& O& n# w
% p  z- r' \/ G3 u, B
                location / {
0 B( X; g# n- A  S                root /usr/local/nginx/html/ #访问这个本地服务器里面的这个html页面" i6 W2 Q6 p$ W0 Y9 I( {9 y7 ^
5 M- _5 h: P7 x
                }2 G  m: u3 G. i: G
        }
, Y9 e. V: ^+ |( U
; ?. U! T. c) D2 c3 k' }% _}# I' g3 [- G4 U

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

./sbin/nginx -s stop
% y% C6 i" C% x0 G6 C

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

./sbin/nginx -c demo_conf/demo.conf' ^7 _  A, r7 t$ R- g! ?, R1 m) h

微信图片_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;' y% c1 q; f7 N/ {

5 P$ I: @7 ~& m7 _
7 z6 [) s4 Q) U, I. F2 L( J5 oevents{
+ ]0 M# V1 p3 _        worker_connections 1024;
+ C  p$ v2 L/ r! Z: G
8 Z( V3 [, Y$ I
( L' V5 l  b" L1 t}
8 ]: k  Z& r: T9 C2 y- uhttp{
0 O* k6 B3 s: Z6 a  v; s3 m        server {% P7 S5 j/ s4 K  W) |
                listen 8888;
+ z3 r2 o% K9 d2 c  {/ v                server_name localhost;, }" {4 l. G5 w4 G) \

$ a. D/ l. R6 s6 c6 Q3 \" E$ x                client_max_body_size 100m;: W: i7 q0 S5 Q& ?/ W

6 C7 K  M5 @% B$ a( g! Y0 H                location / {
  ^1 j& c$ Z  P8 Q* m: ]- Z                root /usr/local/nginx/html/;
6 X$ D6 E/ ^. E8 w, C. y& S* g                proxy_pass http://192.168.29.141;
# n7 b( i! l7 K2 ?* C/ E                }  Y! s# M( q/ E
        }
6 z* Q" g; Y  A1 W/ O" t7 t
% _! ~/ R' K0 @3 e% F$ y}& W4 v" W/ R$ L2 T3 e- S

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

微信图片_20210301151054.png

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

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

worker_processes 4;3 ^+ E$ {3 J) `) x

1 _& s* P  c3 r. u1 g' Y, b$ w, I3 c8 e1 k! i: s
events{2 V  \  z1 e* r6 I* s; Z
        worker_connections 1024;' U# U9 X# S, w0 }8 j/ K& R9 S- F( l, p
6 O2 b8 y3 w) W2 h2 l; G2 X
  b0 p4 o' R! @* r3 X( T, h2 s# L0 @
}. D* O9 ^4 r; C6 u7 b
http{
# C# X. X& u% V+ a9 v- E4 g        upstream backend{" |% ]! V4 \9 c) Z2 z
                server 192.168.29.142 weight=2;//weight表示权重
0 U( x4 F+ N' i                server 192.168.29.141 weight=1;
* i* j0 Y! @) f. s        }
# s0 I" _3 b. ^/ |        server {/ }  R  R) ?4 `! D
                listen 8888;, n1 t( ?! M! L( ?4 q% ?
                server_name localhost;
5 n0 J; W  J! z" ?1 e
+ `; P8 k' F9 B: n- N! E$ Q6 j' i                client_max_body_size 100m;
1 G4 Q6 y9 F: M3 s8 U* B( w6 A7 G$ {$ j
                location / {
7 V0 D3 P" V* ]. X" ?) L             #   root /usr/local/nginx/html/;
; b1 w* ^0 ]0 M$ P+ z        #       proxy_pass http://192.168.29.141;
2 J4 }* \& d* @& Z4 G                proxy_pass http://backend;
; {$ O7 T: ^# \; v/ V9 g                }8 j- e$ y. l& M* t3 E4 J
        }. s( k) D& u. Z8 L7 U

1 g/ A8 G7 C- T- P}
% `( d7 |5 S4 X4 R6 X- D9 g; i

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

微信图片_20210301151057.png

微信图片_20210301151100.png

1 }1 E1 ~' Q! O! h1 o

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

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

root@ubuntu:/usr/local/nginx# ls/ Y6 Z9 {7 B  i2 ^( [
client_body_temp  fastcgi_temp  images  proxy_temp  scgi_temp   vip_conf
/ N% R4 J: [. r/ r( i  Bconf              html          logs    sbin        uwsgi_temp6 r9 w3 V7 e/ O" S# v

8 @9 a5 f) k& }root@ubuntu:/usr/local/nginx# mv /home/txp/share/nginx/*.png images/
8 b) G2 F. w! b+ n( g  lroot@ubuntu:/usr/local/nginx# ls1 c2 L5 U9 y" }8 j$ a% I; r
client_body_temp  fastcgi_temp  images  proxy_temp  scgi_temp   vip_conf
0 q6 F( h' B. C% \0 ^/ r3 _; wconf              html          logs    sbin        uwsgi_temp
& q# }! @, f+ |7 n1 ^& @root@ubuntu:/usr/local/nginx# cd images/
" G, T5 L* v  p3 Yroot@ubuntu:/usr/local/nginx/images# ls- a- i) \$ X3 e4 @) d4 B( u9 \
1.png  2.png  3.png. ~% {5 S6 D4 b6 b

然后进行conf文件配置:

worker_processes 4;' e& ~& O- o. [. A$ q1 e+ G

7 b/ V8 x, i6 ^. }* h
8 K7 `2 m! N# A: Z6 S' |events{& G7 |  l2 y' V
        worker_connections 1024;6 w, U" d% R. T! I; r
8 Q3 N1 U8 ]4 e0 p/ a9 U; e
3 L) d5 i2 A& P: P  }" C
}& Q2 C8 x' K; _" B0 ^( M$ d
http{
! z$ L! g8 @. b6 F) o        upstream backend{
) Z# S8 d9 n2 @6 v4 W                server 192.168.29.142 weight=2;
  X7 ~* k. z8 x' h, g                server 192.168.29.141 weight=1;
  {; }4 W$ P1 w        }
9 E; F% T9 b2 h8 W        server {! o" j8 U' s* g* l' b1 [
                listen 8888;" }# s) v7 I9 r
                server_name localhost;+ v: c) |1 S) h' z; G/ ]: }
3 O# K: o( R9 F- U; E! U; v9 h
                client_max_body_size 100m;% O+ a7 T/ l. ^7 |4 }* L2 E$ ^6 y

. ]6 M6 v" E' ~& A+ m) e7 X' c" n                location / {
& r( F+ G; O; c             #   root /usr/local/nginx/html/;
1 }' y  A. i: z% ]& B: N        #       proxy_pass http://192.168.29.141;( S! X* C8 F  V. s
                proxy_pass http://backend;
3 Q3 w3 i& A+ r$ ]: H" W; _                }4 J( H3 ]$ Y  _- }  q9 J. w
                location /images/ {
7 g- d% z+ g& Y% v) _& i2 u                root /usr/local/nginx/;) ^/ |. \) u! D( x5 E
                }
0 P+ F' N9 p; W
$ g' {: ]* g9 a; Z$ f& j        }
2 \4 R3 S( J# c6 j' l}* z8 S" p! G1 p0 W" r4 i/ z. _0 B6 x

实现结果如下:

微信图片_20210301151103.png

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

root@ubuntu:/usr/local/nginx# mv /home/txp/share/nginx/test.mp4  media/' M, Z1 k3 F; J3 I' W5 Z  y6 v% ]
root@ubuntu:/usr/local/nginx# cd media/
0 y$ M: S- b, Uroot@ubuntu:/usr/local/nginx/media# ls
* M* H0 j* i  Htest.mp4) `, E# F! R0 P0 _1 a

conf文件配置:

worker_processes 4;
2 r/ z7 o1 A; b7 X# r( c1 P( ?2 l0 B5 L

0 O0 ]) b# {3 b, b/ U) j9 qevents{  K, D. i' f& N- ]
        worker_connections 1024;7 S8 x/ Y- S  y9 w. \; @

3 e! R* E( i& Y9 h. j5 Z0 b/ i0 I9 m6 L+ C  {+ |% F( z
}
0 r- b- H; h  d0 }1 phttp{
' r0 `0 e, ~) N% q& F5 u% L        upstream backend{5 k) x* G/ d+ c3 f, ?! @
                server 192.168.29.142 weight=2;0 Z" r& ?4 k7 {  t1 P6 ^
                server 192.168.29.141 weight=1;
: Y8 I) K) g* K        }
% q6 X* n% A* _' E- W9 M! H, U        server {4 H; O9 T+ z2 n4 z) D: M( ~
                listen 8888;+ z: p& O) W; T* W2 p7 U
                server_name localhost;1 p5 L0 j9 }. s# @! ?; c; J

$ K) g3 P3 G7 @6 E/ t& `* S                client_max_body_size 100m;' U. C# N' U& Y; M  i

1 k9 E5 ~/ q) k6 a  K8 Z( n% q/ L                location / {
* X# T; ?+ X0 `             #   root /usr/local/nginx/html/;
! M' t1 y8 x: n) C8 Q        #       proxy_pass http://192.168.29.141;! B: g; w$ c/ {
                proxy_pass http://backend;* K( o, b! W- p* c3 n
                }3 L" J0 z7 N% U; M
                location /images/ {4 E0 u& T% @( q2 Q! p/ ]
                        root /usr/local/nginx/;& G6 `7 ~. s2 A- G/ L9 i- H
                }
* I/ U0 h8 q9 m' G$ T                location ~\.(mp3|mp4) #这里利用了正则表达式
. W! [3 l) x3 C  k' z+ G7 {% r                        root /usr/local/nginx/media/;" C  ~4 C/ @8 G8 h
                }9 ]7 q3 x9 X  _8 P: H

# d7 n6 |0 |: @* V8 s' z4 @        }- n8 ]/ h8 U* Q, x  D& c8 t
}" o2 q* p' G9 b- C+ m9 l, q7 `3 S4 }6 F

结果如下:

微信图片_20210301151107.png 三、总结

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

tu18879499804: d/ A0 q+ H+ s) p- e5 n2 I. i' x

站在巨人的肩膀上:

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
! S) @- Q0 n+ d
) n( X( p* N- N& Xhttps://juejin.cn/post/6844903944267759624
* M, A" w# O  U! M( _% _2 Q1 s" X8 W5 H7 U" |% X% v! K' K
https://ke.qq.com/webcourse/inde ... 5285890803239999870

8 M! c; _# ~  Q  W- r2 R) G9 L
赞 收藏 1 评论0 发布时间:2021-3-1 15:16

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版