# nginx安装配置 > [!tip] 参考文档[直播流转码](https://wxzzz.com/425.html) > 采用`ubuntu20.04`进行安装,`centos`自行替换 > 文章的`nginx`版本为`1.8.1`,新版本的插件不支持,所以用的`1.20.2` ## 所需环境软件包 > [!tip] `nginx-flv-module`基于`nginx-rtmp-module`进行开发,所以安装`flv`模块后可以直接用 1. [nginx](http://nginx.org/) 2. [nginx-http-flv-module](https://github.com/winshining/nginx-http-flv-module) 3. 推流工具 `obs`或者`ffmpeg` 4. 播放工具 `vlc`或者`flv`在线播放工具 ## 编译安装 ### 前置环境配置 1. 配置编译前置环境`pcre`库,可能还需要`zip` `g++`等库来解压或者编译 #### **ubuntu** > 非`ubuntu`可跳过 ```shell sudo apt-get install libpcre3 libpcre3-dev ``` 你可能还需要安装,安装时没出现 ```shell sudo apt-get install openssl libssl-dev ``` #### **centos** > 非`centos`可跳过 ```shell yum -y install unzip yum -y install gcc-c++ yum -y install pcre pcre-devel yum -y install zlib zlib-devel yum -y install openssl openssl-devel ``` 2. 下载对应的数据包`nginx-flv-module`以及`nginx` > [!tip] 下载`nginx-flv-module`模块,如果下载不动可以选择下载 `zip` 然后在解压 > 可选克隆方案,或者下载zip方案 #### **克隆方案** ```shell git clone https://github.com/winshining/nginx-http-flv-module.git ``` #### **zip方案** ```shell wget https://github.com/winshining/nginx-http-flv-module/archive/refs/heads/master.zip unzip nginx-http-flv-module-master.zip ``` 3. 下载编译`nginx` > 下载并解压`nginx`,选择版本为`1.20.2` ```shell wget http://nginx.org/download/nginx-1.20.2.tar.gz tar -zxvf ./nginx-1.20.2.tar.gz cd ./nginx-1.20.2 ``` > 为`nginx`添加`flv`模块, `--add-module`可以多次输入,等号后接模块路径 > 为防止权限问题,make install 用`sudo`进行获取权限 ```shell ./configure --prefix=/usr/local/nginx --add-module=../nginx-http-flv-module make sudo make install ``` ## 启用ssl > [!tip] 为了防止`nginx`被攻击,可以启用`ssl`加密 1. nginx 启用ssl ```shell sudo vim /usr/local/nginx/conf/nginx.conf ``` 2. 配置参考 ```shell #定义Nginx运行的用户和用户组 server { listen 443 ssl; server_name localhost; ssl_certificate /usr/local/nginx/conf/ssl/ssl.pem; ssl_certificate_key /usr/local/nginx/conf/ssl/ssl.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } } ``` 3. 编译nginx时添加ssl支持 ```shell ./configure --prefix=/usr/local/nginx --add-module=../nginx-http-flv-module --with-http_ssl_module ``` ## 启用rtmp ## 启动以及配置`nginx` > `nginx` 的二进制文件在 对应目录下`sbin`文件夹内 1. 配置`nginx`,编辑`nginx`配置文件 ```shell sudo vim /usr/local/nginx/conf/nginx.conf ``` 2. 配置参考 ```shell #定义Nginx运行的用户和用户组 user nginx nginx; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /home/nginx/log/error.log info; events { worker_connections 1024; } rtmp { server { listen 1988; chunk_size 4000; notify_method get; #直播 application live { live on; publish_notify on; # 这个地址可以用来作权限验证,可以不填写,内部内容自行查找 # on_publish http://127.0.0.1:80/on_publish.php; } #点播 application vod { play /tmp/video; } } } http { # http监听地址,可以忽略 server { listen 80; server_name localhost; } # flv转发地址 server { # 端口 listen 19123; server_name localhost; location / { add_header 'Access-Control-Allow-Origin' '*'; root html; index index.html index.htm; } # 原始流地址 location /live { flv_live on; } # 转换为flv后的流地址 请求时 ip:port/flv location /flv { add_header 'Access-Control-Allow-Origin' '*'; flv_live on; chunked_transfer_encoding on; } } } ``` 3. 查看配置是否正确 `nginx -t` > [!tip] 进入到`nginx`目录下的`sbin`文件夹执行目录 > 问题自行解决,无效配置会提示 ```shell sudo ./nginx -t ``` 4. 启动`nginx` ```shell sudo ./nginx ``` Tips:停止nginx服务`./nginx -s stop` ```shell ./nginx -s stop ``` 重新加载配置 `./nginx -s reload` ```shell ./nginx -s reload ``` 通过以上配置,即可完成服务端的直播环境配置。 5. 查看是否启动成功 > [!tip] 如果没有返回,代表没启动成功,检查配置. 浏览器访问`ip`,有显示`nginx`即可 ```shell sudo lsof -i:19123 sudo lsof -i:1988 sudo lsof -i:80 ``` ## 测试推流 > 使用`obs`进行推流