RTMP Server Nginx: The Complete Guide to Setting Up a Scalable Streaming Server
Introduction to RTMP Server Nginx
Live and on-demand video streaming has become a fundamental part of today's digital landscape. Whether you're running a gaming channel, delivering webinars, or hosting virtual events, having a reliable and scalable streaming server is crucial. This is where RTMP server nginx comes into play. Combining the robust Real-Time Messaging Protocol (RTMP) with Nginx's high-performance web server, you can power your own video streaming server without hefty licensing costs.
In this guide, we focus on the RTMP server nginx setup for 2025, covering everything from installation and configuration to advanced use cases and monitoring. You'll learn how to build a secure, scalable, and high-performance streaming platform using open source technologies. We'll cover essential topics such as HLS/DASH streaming, OBS/FFmpeg integration, security, statistics, and best practices for production environments.
What is RTMP and Why Use Nginx?
The Real-Time Messaging Protocol (RTMP) is a TCP-based protocol developed by Macromedia (now Adobe) for high-performance transmission of audio, video, and data between a server and a Flash player. Today, it remains a widely-used protocol for ingesting live video streams to servers, which then transcode or relay streams to viewers using modern protocols like HLS and DASH.
Nginx, with its lightweight architecture and modular design, is a popular choice for RTMP server deployments. The nginx rtmp module extends Nginx with powerful streaming capabilities while maintaining its renowned stability and efficiency. Use cases include live event broadcasting, video conferencing, e-learning, and multi-platform content distribution. If you’re looking to build interactive video experiences, integrating a
Video Calling API
can further enhance your platform’s capabilities for real-time communication.Prerequisites for Setting up RTMP Server on Nginx
Before deploying an RTMP server nginx, consider the following prerequisites:
- Hardware/OS: A Linux server (Ubuntu 22.04 or Debian 12 recommended), with at least 2 CPU cores and 4GB RAM for small to medium workloads.
- Network/Bandwidth: Sufficient upstream bandwidth—plan for at least 5Mbps per HD stream. Wired Gigabit Ethernet is preferred for reliability.
- Dependencies: Root/
sudo
access, basic knowledge of Linux command line, and an updated system. - Firewall: Open TCP port 1935 (default for RTMP) and configure firewall as needed.
Proper planning ensures your nginx rtmp setup runs smoothly and scales with your audience. For mobile and cross-platform streaming, you may also want to explore
webrtc android
andflutter webrtc
solutions for seamless video integration.Installing Nginx and the RTMP Module
Installing Nginx on Ubuntu/Debian
Start by installing the Nginx web server:
1sudo apt update
2sudo apt install nginx -y
3
Installing the RTMP Module
The RTMP module isn't included by default. There are two main approaches:
1. Compile Nginx with the RTMP Module (Open Source)
1sudo apt install build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev git
2cd /usr/local/src
3sudo git clone https://github.com/arut/nginx-rtmp-module.git
4sudo wget http://nginx.org/download/nginx-1.26.0.tar.gz
5sudo tar -zxvf nginx-1.26.0.tar.gz
6cd nginx-1.26.0
7sudo ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
8sudo make
9sudo make install
10
2. Install via Prebuilt Packages (Dynamic Module)
Some distributions provide prebuilt RTMP modules:
1sudo apt install libnginx-mod-rtmp
2
Note: NGINX Plus, the commercial version, does not include the rtmp module but offers advanced streaming features. For most open-source projects, the community module suffices. If you’re seeking a
jitsi alternative
for video conferencing, integrating open-source modules like these can be a flexible solution.Verifying the Installation
Check RTMP module availability:
1nginx -V 2>&1 | grep -- --add-module=../nginx-rtmp-module
2
Or for dynamic modules:
1nginx -V 2>&1 | grep rtmp
2
If present, you're ready to configure your RTMP server nginx.
Configuring RTMP Server on Nginx
Creating nginx.conf for RTMP
Here's a basic RTMP server block to add to your
/etc/nginx/nginx.conf
:1rtmp {
2 server {
3 listen 1935;
4 chunk_size 4096;
5
6 application live {
7 live on;
8 record off;
9 }
10 }
11}
12
- listen 1935;: Listens for incoming RTMP connections (port 1935).
- chunk_size 4096;: Sets RTMP chunk size for optimal performance.
- application live;: Defines a streaming app ("live").
- live on;: Enables
live streaming
. - record off;: Disables server-side recording (can be enabled later).
If you want to quickly
embed video calling sdk
into your web or mobile application alongside your streaming setup, there are prebuilt solutions that work seamlessly with Nginx RTMP.Enabling HLS and DASH Streaming
To support playback in modern browsers and devices, enable HLS (HTTP
Live Streaming
) and MPEG-DASH:1 application live {
2 live on;
3 hls on;
4 hls_path /tmp/hls;
5 hls_fragment 3;
6 dash on;
7 dash_path /tmp/dash;
8 }
9
- hls on; / dash on;: Enables HLS and DASH outputs.
- hls_path /tmp/hls;: Directory for HLS fragments.
- dash_path /tmp/dash;: Directory for DASH segments.
Make sure these directories exist and are writable by Nginx.
Security Best Practices
Secure your RTMP server nginx deployment:
- Restrict ingestion to trusted IPs
- Enable authentication for publishing and playback
Example: Limiting publishing to localhost and using a simple allow/deny policy:
1 application live {
2 live on;
3 allow publish 127.0.0.1;
4 deny publish all;
5 allow play all;
6 }
7
For advanced authentication, consider using
exec
directives or integrating with external scripts. For teams building secure, real-time video solutions, leveraging a robust Video Calling API
can simplify authentication and user management.
Streaming Workflow: Sending and Receiving Streams
Streaming from OBS/FFmpeg to Nginx RTMP Server
OBS Studio Example
Set OBS Studio's stream settings:
- Service: Custom
- Server:
rtmp://your-server-ip/live
- Stream Key:
test
FFmpeg Example
1ffmpeg -re -i input.mp4 -c:v libx264 -f flv rtmp://your-server-ip/live/test
2
If you’re developing a cross-platform streaming or conferencing app, you might want to look into
flutter webrtc
for seamless integration with mobile and web clients.Viewing Streams
To view your stream:
- VLC Media Player:
Media
>Open Network Stream
>rtmp://your-server-ip/live/test
- Browser (HLS): After enabling HLS, point your player to
http://your-server-ip/hls/test.m3u8
- Embedded Player: Use a library like Video.js or hls.js for embedding playback in your web page.
For those looking to add interactive features, a
Video Calling API
can be embedded alongside your streaming player for real-time audience engagement.Monitoring, Statistics, and Troubleshooting RTMP on Nginx
Enabling RTMP Statistics Page
Add this to your nginx.conf HTTP server block:
1http {
2 ...
3 server {
4 listen 8080;
5 location /stat {
6 rtmp_stat all;
7 rtmp_stat_stylesheet stat.xsl;
8 }
9 location /stat.xsl {
10 root /usr/local/nginx/html;
11 }
12 }
13}
14
Visit
http://your-server-ip:8080/stat
to see real-time streaming statistics.Common Issues & Fixes
- Streams not starting: Check firewall rules (port 1935), permissions, and nginx error logs.
- Playback issues: Validate stream key, check HLS/DASH paths, ensure correct permissions.
- High latency: Tune
hls_fragment
/dash_fragment
values, or upgrade server resources.
If you’re migrating from legacy conferencing tools, consider exploring a
jitsi alternative
for more modern, scalable video solutions.Advanced RTMP Server Nginx Features
- Multi-Streaming (Restreaming): Push streams to platforms like Twitch/YouTube with:
1 application live {
2 live on;
3 push rtmp://twitch.tv/app/your_stream_key;
4 push rtmp://youtube.com/live2/your_stream_key;
5 }
6
- Recording Streams:
1 application live {
2 live on;
3 record all;
4 record_path /var/recordings;
5 }
6
- Performance Tuning Tips:
- Increase worker processes (
worker_processes auto;
) - Tune TCP stack (sysctl)
- Use SSDs for HLS/DASH paths
- Regularly monitor resource usage
- Increase worker processes (
For developers who want to
embed video calling sdk
features directly into their streaming platforms, prebuilt SDKs can accelerate your deployment and enhance user engagement.Conclusion: When to Use RTMP Server Nginx
RTMP server nginx offers a scalable, flexible, and cost-effective solution for live and on-demand streaming in 2025. Whether you're broadcasting to thousands or just a handful of viewers, its modularity and integration with modern streaming protocols make it a top choice for developers and content creators. Explore, experiment, and build your own streaming platform with confidence. Ready to get started?
Try it for free
and see how easy it is to launch your own scalable video streaming solution.Want to level-up your learning? Subscribe now
Subscribe to our newsletter for more tech based insights
FAQ