Hướng dẫn xây dựng cơ chế Static Media kết hợp với Reverse Proxy cùng Openlitespeed
Giả sử ta muốn lưu trữ Static đối với các File nặng để nó xử lý trực tiếp với Openlitespeed thay vì phải xử lý qua đầu Webserver, ta sẽ tiến hành tạo ở Virtual Host 1 Context riêng dẫn tới đường dẫn Media đó, ở đây mặc định là /media/ nhé
Cách xử lý Context
Vào Openlitespeed - Virtual Host - Context - Tạo Context mới (Static)

Giả sử là như vậy, ta có thể để các tham số sau
- URI: Đường dẫn tới Media đó, ví dụ domain.com/media/file.mp4 chẳng hạn
- Location: Đường dẫn tới file trong thư mục máy tính của bạn
- Accessible: Yes
- Header cache: Tùy vào loại File, như của mình là HLS thì là Cache-Control: public, max-age=31536000, immutable
- Access Allowed: * (để ai cũng có thể xem được, cũng có thể giới hạn tùy bạn)
Đặt context này ở cấp cao hơn so với App của bạn (Reverse Proxy), tiếp đó ta tới bước tiếp theo
Thiết lập MimeType bổ sung cho cơ chế HLS
HLS thì nó dùng dạng đuôi như sau, ta cần bổ sung vào cơ chế của Openlitespeed nhé
| Đuôi File | Mô tả |
| m3u8 | application/vnd.apple.mpegurl |
| ts | video/mp2t |

Ấn vào MIME Settings kia là ta sẽ có giao diện đồ họa để thực hiện tinh chỉnh loại File
Xác lập quyền
chmod o+x /thư mục demo
chmod -R 755 /thư mục demo/media
OpenLiteSpeed chạy dưới user lsphp hoặc nobody (tùy cấu hình). Nếu user này không có quyền "vào" các thư mục cha, nó sẽ trả về lỗi 403. hãy thử Curl đường dẫn Media để xác định rõ là được
HTTP/2 200
etag: "754-694aa8c4-101085;;;"
last-modified: Tue, 23 Dec 2025 14:35:48 GMT
content-type: application/vnd.apple.mpegurl
content-length: 1876
accept-ranges: bytes
date: Tue, 23 Dec 2025 16:51:24 GMT
server: LiteSpeed
cache-control: public, max-age=31536000, immutable
alt-svc: h3=":443"; ma=2592000, h3-29=":443"; ma=2592000, h3-Q050=":443"; ma=2592000, h3-Q046=":443"; ma=2592000, h3-Q043=":443"; ma=2592000, quic=":443"; ma=2592000; v="43,46"
Đây là một đoạn thông tin khi ta Curl Video HLS thẳng từ máy chủ, nó sẽ ưu tiên hơn cơ chế Proxy
Ứng dụng chạy Docker có cần phải Mount Media nữa không?
Câu trả lời là không, vì lúc này ứng dụng đã sử dụng Media Static và đặt ở ưu tiên cao hơn rồi, nên vai trò của ứng dụng Web chỉ là tạo kết nối Database với dữ liệu đó thay vì phải lưu. Cơ chế này sẽ khiến Media được Serve riêng nên có hiệu năng tốt hơn rất nhiều so với việc được Serve qua Backend (đi lòng vòng, đặc biệt là qua Docker như các ứng dụng Nam hay làm)