Hướng dẫn cấu hình nginx chặn cross origin của tool p2p drive – chống ăn cắp link

Hi các bác, hôm nay em hướng dẫn các bác cấu hình nginx để chặn ăn cắp link m3u8 hoặc streaming trộm trong tool p2p drive của em!

Lý thuyết để thực hiện là như sau

  1. Đưa domain của link embed và các domain được phép stream vào file config của tool
  2. Cấu hình nginx để chặn các trang khác nhúng chính trang embed mà các bác dùng để nhúng vào web của các bác

Em hướng dẫn 2 bước trên chi chiết như dưới dây

1.Đưa domain của link embed và các domain được phép stream vào file config của tool

File config của tool em nằm ở đường dẫn /root/p2pdrive/p2p-drive.config.json sẽ có dạng như trong hình dưới đây

Các bác để ý vị trí mà em đặt dấu mũi tên, đó là nơi mà chúng ta sẽ đặt domain của link embed và các domain được phép stream vào

Ví dụ em có domain của link embed là “p2p.vanlongstream.com” và sẽ cho 2 domain là vanlongstream.comstreamservice.online được phép stream thì em sẽ làm như hình sau

Bây giờ ta chỉ cần lưu file config lại và dùng lệnh sau để restart tool là tool sẽ nhận config nhé

cd /root/p2pdrive
./kill-tool.sh
./setup-init.sh
./run.sh

Lưu ý: Nếu bác nào không dùng embed của em mà dùng link m3u8 để stream, thì chỉ cần làm những gì ở trên là đủ, không cần làm bước 2 ở sau đây nhé! Nhưng dùng link m3u8 thì phải setup giống đúc file embed của em nhé, nói chung em khuyên các bác dùng dạng embed.

2. Cấu hình nginx để chặn các trang khác nhúng chính trang embed mà các bác dùng để nhúng vào web của các bác

Trang nhúng để play của tool em sẽ có dạng
https://your-sub-stream-domain/public/dist/index.html

Nên các bác dùng cách dưới đây để chặn các trang web khác nhúng trang embed của các bác

Trong config nginx em cấu hình mặc định cho các bác ở file /etc/nginx/nginx.conf bác chỉnh block /public như sau

location /public {
	root /root/p2pdrive;
	valid_referers blocked server_names
        domain1 domain2 your-sub-stream-domain;
	if ($invalid_referer) {
		return 403;
	}		
}

Trong đó domain1 domain2 là các domain mà các bác cho phép để stream,
your-sub-stream-domain là domain của url mà dùng để embed, em lấy ví dụ nếu em cho 2 domain được stream là vanlongstream.comstreamservice.online và domain của url embed là p2p.vanlongstream.com thì cấu hình đoạn trên sẽ là

location /public  {
          root /root/p2pdrive;
          valid_referers blocked server_names
          vanlongstream.com streamservice.online p2p.vanlongstream.com;
          if ($invalid_referer) {
            return 403;
          }
}

Nếu muốn cho toàn bộ sub domain được phép stream thì cấu hình sẽ là

location /public {
          root /root/p2pdrive;
          valid_referers blocked server_names
          vanlongstream.com *.vanlongstream.com streamservice.online *.streamservice.online p2p.vanlongstream.com;
          if ($invalid_referer) {
            return 403;
          }
}

Sau khi chỉnh sửa như trên, các bác cần lưu lại file config của nginx và reload nginx theo lệnh sau nhé

nginx -t
nginx -s reload

Thế là xong bước 2, giờ chỉ có những domain đã cho phép thì mới có thể nhúng trang embed của các bác.

Lời kết: Khi các bác thực đầy đủ 2 bước như trên thì đã hoàn thành việc chống các web khác ăn trộm link của mình, chúc các bác thành công, em sẵn sàng support các bác nhé, đừng ngại inbox em khi cần!