Nginx Forbideen 403

时间:2019-01-13 11:56:49

标签: nginx nginx-config

我通过Nginx服务器运行流服务

我只想通过1个域运行流(格式为m3u8)

    server {
        listen 80;
    server_name www.mydomain.com;
     if ($host != "www.mydomain.com") {

            return 403;
        }
}

在这里,例如,当我在浏览器上测试链接:http://ip_server_stream/live/1.playlist.m3u8时,它会在所有域上显示Forbideen 403错误

如果我只放

server {
            listen 80;
        server_name www.mydomain.com;
}

它适用于所有域和VLC

我只希望链接http://ip_server_stream/live/1.playlist.m3u8在www.mydomain.com上有效,而对其他域或vlc无效

我的nginx版本是1.7.5

这是我的Nginx配置文件

这是我的配置文件,即使我有IF条件,它也会在所有域上显示错误403

worker_processes  8;
        error_log  logs/error.log debug;
        events {
        worker_connections  1024;
        }
        rtmp {
        server {
        listen 1991;
        allow play all;

        application live {
        allow play all;
        live on;
        hls on;
        hls_nested on;
        hls_path /HLS/live;

        }


        }
        }


        http {
        include       mime.types;
        default_type  application/octet-stream;


        server {
            listen 80;
        if ($http_host != "www.mydomain.com") {

                    return 403;
                }


        location /live {

        index  index.html index.htm;


        types {
        application/vnd.apple.mpegurl m3u8;
        }
        alias /HLS/live;
        add_header Cache-Control no-cache;
        }



        location / {

        root   html;
        index  index.html index.htm;
        }   
        }


        }

2 个答案:

答案 0 :(得分:0)

尝试一下。

if ($http_host != "www.mydomain.com") {
    return 403;
}

答案 1 :(得分:0)

让我们建立两个服务器。其中之一是虚拟的,仅返回403响应。

http {

    # dummy server.
    server {
        listen 80 default_server;

        location / {
            return 403;
        }
    }

    # main server.
    server {
      listen 80;
      server_name www.mydomain.com;

      # PLEASE WRITE YOUR CONFIGURATION.
    }
}