nginx - 为 rtmp 流设置 Nginx,Apache2 流也可以吗?
问题描述
我一直在测试我网站上的视频流。我在运行 Debian-10.3.0 (buster) 的机器上运行我家的 Web 服务器。它使用 Apache-2.4.38 来提供网页服务。因此,在设置视频流时,我使用 nginx 将所有内容分开。Apache 监听 80 和 443 端口,nginx 监听 81 并将使用 444。
$ sudo apt install nginx libnginx-mod-rtmp ffmpeg obs-studio
nginx 配置文件位于 /usr/local/etc/nginx/nginx.conf :
load_module /usr/local/libexec/nginx/ngx_stream_module.so;
load_module /usr/local/libexec/nginx/ngx_rtmp_module.so;
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
server {
listen 81;
server_name www.davekimble.net;
location / {
root /home/dk/www/davekimble.net/public_html;
index index.html index.htm;
}
}
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
}
}
}
这似乎工作正常,但令我惊讶的是 Apache 视频流也是如此。怎么会这样 ?
Apache 正在使用 docroot 路径:/home/dk/www/davekimble.net/public_html/。Nginx 使用相同的 docroot。我在某处看到一句话说这会改变事情,但我在 wiki 中找不到任何提及。 那里有一个文件夹 /stream 保存所有 .mp4 文件。有一个 streaming.php 链接到所有和视频文件。
要对此进行测试,请访问http://davekimble.net/streamimg.php并单击一个链接。
更新 1
以证明它是 Apache 进行流式传输,我将防火墙的端口 81 关闭到 nginx,然后执行:
# systemctl stop nginx
它仍然有效,没有运行 nginx。
我已将“stream.htm”更改为“streaming.php”,它只是列出了 /stream/ 文件夹中的文件。
更新 2
实际上 /etc/nginx/nginx.conf 中的“基本配置”是不必要的,我已将其从帖子中删除。需要 /usr/local/etc/nginx/nginx.conf 中的“替代配置”。
解决方案
推荐阅读
- c++ - Loki MakeTypelist 递归模板让我很困惑
- python - 有什么方法可以避免银行家在 Python 3 中四舍五入?
- elasticsearch - Magento 2.4 无法验证与 Elasticsearch 的连接。在您的集群中找不到活动节点
- r - 如何在R中的字符串引号内指定一个变量?
- android - 如何根据android中的输入使视图不可见
- python - Django 中的超级用户转储数据/加载数据
- sql-server - 如何为特定架构创建只读用户
- css - CSS3、Angular 8、Algolia - 自定义样式表不覆盖小部件样式
- javascript - 日历图像面临问题
- c# - 有一种更好的方法可以避免在 Console.ReadLine 中输入空值,而不是 if 语句