利用Nginx和Docker搭建一个在线直播的web服务——动静分离实践
- 前言
- 搭建服务
- Nginx配置负载均衡
- 配置动静分离
- 关于作者
前言
业务实现为
利用3个docker容器封装flask服务,每个容器拥有不同的ip(如:81, 82, 83)向外暴露。利用nginx实现端口转发,负载均衡以及动静分离
其中flask为一个开源的在线直播SDK(好吧 在线直播服务是幌子 这篇主要是结束如何搭建动静分离的)
项目地址:https://github.com/99kies/MRoom
最终呈现
当然只要你稍微了解一下 https://github.com/AgoraIO 这个项目,然后你就可以使用这个服务了!(App ID,Channel,Token。自己配置哟,我是来实践负载均衡的)
搭建服务
我们先获取一下这个demo文件,然后build一个镜像(我已经写好Dockerfile了)。
git clone https://github.com/99kies/MRoom
cd MRoom
docker build -t agora .
启动三个服务端口分别设置为(81,82,,83)
docker run -id -p 81:8000 --name agora1 agora
docker run -id -p 82:8000 --name agora2 agora
docker run -id -p 83:8000 --name agora3 agora
此时其实已经可以通过81,82,83端口来访问服务了。
但是我们需要搭建负载均衡和动静分离!
Nginx配置负载均衡
在/etc/nginx/conf.d或者/balabla/nginx/conf.d下创建一个agora.conf文件,当然/etc/nginx/nginx.conf或者/balabla/nginx/nginx.conf的http内要这样子编写
include /etc/nginx/conf.d/agora.conf;
# include /balabala/nginx/conf.d/agora.conf;
配置conf.d/agora.conf
upstream agora_server{
server 127.0.0.1:81;
server 127.0.0.1:82;
server 127.0.0.1:83;
}
server {
listen 80;
#server_name www.agora.com;
location / {
proxy_pass http://agora_server;
}
}
没启动nginx的启动一下,启动了的nginx -s reload重载一下配置文件。
之后 通过 访问80端口就成功辣。
配置动静分离
我们首先看一下我们的服务里的静态文件
用nginx动静分离的概念就是,让nginx服务器运行静态文件,docker中的flask服务通过调用nginx运行的静态文件达到效果,也可以理解你自己搭建了一个cdn服务。
- 配置conf/agora.conf文件。
upstream agora_server{
server 127.0.0.1:81;
server 127.0.0.1:82;
server 127.0.0.1:83;
}
server {
listen 80;
#server_name www.agora.com;
location / {
proxy_pass http://agora_server;
}
location ~ .*\.(js|css|ico|png|jpg|eot|svg|ttf|woff) {
root /home/kies/www/static;
}
}
最后一个location就是我们静态文件的地址,nginx会根据这个目录下的内容启动服务。
此时启动会导致静态文件不能成功加载
2. 将MRoom项目中的MRoom/app/static文件复制到/home/kies/www/static下。
3. nginx -s reload 重载配置文件
4. 访问80端口,动静分离成功搭建!
提示
如果遇到不能成功搭建,请查看/var/log/nginx/下的报错日志,根据日志内容进一步完善项目。
关于agora这个开源项目 https://github.com/AgoraIO
关于作者
欢迎点赞????评论哟~