git clone https://github.com/nginx/nginx.git

git clone https://github.com/arut/nginx-rtmp-module.git

启动命令是:

/Users/zoujiu/software/nginx/objs/nginx -c /Users/zoujiu/software/nginx/conf/nginx.conf -p /Users/zoujiu/software/nginx/prefix

终止命令是:

/Users/zoujiu/software/nginx/objs/nginx -s stop /Users/zoujiu/software/nginx/conf/nginx.conf -p /Users/zoujiu/software/nginx/prefix

配置流媒体服务器 nginx-rtmp-module

因之前使用了 sudo apt-get install nginx安装了nginx,所以需要首先停止nginx nginx -s stop,然后再次下载相同版本的nginx和nginx-rtmp-module,然后编译的,过程中还需要编译openssl,所以还需要下载openssl,命令是: --with-openssl=

或者直接下载好nginx和nginx-rtmp-module和pcre和openssl,然后一起编译的

https://github.com/nginx/nginx

https://nginx.org/en/docs/configure.html

https://github.com/arut/nginx-rtmp-module

https://github.com/openssl/openssl/releases

https://www.pcre.org/
https://github.com/PCRE2Project/pcre2/releases

编译命令分别是:需要指定之前配置文件的路径和其他路径

./configure --add-module=/home/admin/nginx-1.26.2/nginx-rtmp-module-master --without-http_rewrite_module --with-http_ssl_module --pid-path=/run/nginx.pid --user=root --error-log-path=/var/log/nginx/error.log --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --with-openssl=/home/admin/nginx-1.26.2/openssl-3.3.2

make

不需要安装,所以不要使用命令make install

编译好以后,找到nginx的可执行文件
whereis nginx
然后将编译好的可执行文件复制过去就行,也就是 sudo cp ./objs/nginx /usr/sbin/nginx

最后启动服务就可以了
sudo nginx

pcre是正则表达式库,https://www.pcre.org/
https://github.com/PCRE2Project/pcre2/releases

最后的编译命令是

./auto/configure --sbin-path=/Users/zoujiu/software/nginx/bin --conf-path=/Users/zoujiu/software/nginx/conf/nginx.conf --pid-path=/Users/zoujiu/software/nginx/nginx.pid --with-http_ssl_module --add-module=/Users/zoujiu/software/nginx/nginx-rtmp-module --with-pcre=/Users/zoujiu/software/nginx/pcre2-10.44 --with-openssl=/Users/zoujiu/software/nginx/openssl-3.3.2 --user=zoujiu --error-log-path=/Users/zoujiu/software/nginx/error.log

make -j6

报错了,“$$CFLAGS -Werror”

修改auto/cc/gcc,CFLAGS="$$CFLAGS -Werror"修改到CFLAGS="$$CFLAGS"

修改auto/cc/clang,CFLAGS="$$CFLAGS -Werror"修改到CFLAGS="$$CFLAGS"

配置文件是:

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

# user root;
worker_processes auto;
pid /Users/zoujiu/software/nginx/nginx.pid;
error_log /Users/zoujiu/software/nginx/prefix/logs/error.log;
# include /etc/nginx/modules-enabled/*.conf;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
# include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1000;
    # multi_accept on;
}

http {
    sendfile on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   60;
    types_hash_max_size 3000;

    include /Users/zoujiu/software/nginx/conf/mime.types;
    default_type application/octet-stream;

    access_log /Users/zoujiu/software/nginx/prefix/logs/access.log;

    gzip on;
    gzip_types          text/plain application/javascript text/css;  

    server {
        # server_name zoujiu.com.cn; 
        server_name localhost; 
        listen 80;
        # listen 443 ssl;
        # ssl_certificate cert/zoujiu.com.cn.pem;
        # ssl_certificate_key cert/zoujiu.com.cn.key;
 
        # ssl_session_cache shared:SSL:1m;
        # ssl_session_timeout 5m;
         
        # ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        # ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

        # ssl_prefer_server_ciphers on;

        # client_max_body_size 3000M;
        location / {
            root /Users/zoujiu/Desktop/webpage/vue-project/dist;
            #proxy_pass http://localhost:7009;
            index /index.html;
            try_files $uri $uri/ /index.html;
            # index /index.html;
            #client_max_body_size 3000m;
        }
        location /article {
            root /Users/zoujiu/Desktop/webpage/vue-project;
        }
        location /people {
            root /Users/zoujiu/Desktop/webpage/vue-project;
        }
        location /csdn {
            proxy_pass http://localhost:7009;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Prefix /;
            proxy_set_header Host      $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
        location /markdown_detail {
            proxy_pass http://localhost:7009;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Prefix /;   
            proxy_set_header Host      $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
        location /zhihu {
            proxy_pass http://localhost:7009;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Prefix /;
            proxy_set_header Host      $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
        location /think {
            proxy_pass http://localhost:7009;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Prefix /;
            proxy_set_header Host      $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
        location /video {
            proxy_pass http://localhost:7009;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Prefix /;
            proxy_set_header Host      $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
        location /travel {
            proxy_pass http://localhost:7009;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Prefix /;
            proxy_set_header Host      $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
        location /upload_video {
            proxy_pass http://localhost:7009;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Prefix /;
            proxy_set_header Host      $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
        # This URL provides RTMP statistics in XML
        location /stat {
            rtmp_stat all;

            # Use this stylesheet to view XML as web page
            # in browser
            rtmp_stat_stylesheet stat.xsl;
        }

        location /stat.xsl {
            # XML stylesheet to view RTMP stats.
            # Copy stat.xsl wherever you want
            # and put the full directory path here
            root /Users/zoujiu/Desktop/webpage/vue-project/stat.xsl;
        }

        location /hls {
            # Serve HLS fragments
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /Users/zoujiu/Desktop/webpage/vue-project;
            add_header Cache-Control no-cache;
            add_header Access-Control-Allow-Origin *;
        }

        # location /dash {
            # Serve DASH fragments
            # root /home/admin/rtmp;
            # add_header Cache-Control no-cache;
        # }
        # location /article/ {
        #       root /Users/zoujiu/Desktop/webpage/vue-project/dist;
        # }
    }
    # server {
    #     listen 80;
    #     server_name zoujiu.com.cn;
    #     rewrite ^(.*)$ https://$host$1;
    #     location / {
    #         index index.html index.htm;
    #    }
    # }
}

rtmp {
    server {
        listen 2061;
        chunk_size 4000;

        application big {
            live on;
        }

        application hls {
            live on;
            hls on;
            hls_path /Users/zoujiu/Desktop/webpage/vue-project/hls;
            hls_fragment 5s;
            hls_playlist_length 15s;
            # hls_sync 100ms;
            # hls_continuous on;
            # hls_base_url http://localhost:443/hls/;
            # hls_cleanup on;
            # hls_fragment_naming system;
            # hls_fragment_naming_granularity 500;
            # hls_fragment_slicing aligned;
            # hls_type event;
        }
    }
}
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐