feat: Add comprehensive documentation suite and reorganize project structure
- Created complete documentation in docs/ directory - Added PROJECT_OVERVIEW.md with feature highlights and getting started guide - Added ARCHITECTURE.md with system design and technical details - Added SECURITY.md with comprehensive security implementation guide - Added DEVELOPMENT.md with development workflows and best practices - Added DEPLOYMENT.md with production deployment instructions - Added API.md with complete REST API documentation - Added CONTRIBUTING.md with contribution guidelines - Added CHANGELOG.md with version history and migration notes - Reorganized all documentation files into docs/ directory for better organization - Updated README.md with proper documentation links and quick navigation - Enhanced project structure with professional documentation standards
This commit is contained in:
156
Caddyfile.livestream
Normal file
156
Caddyfile.livestream
Normal file
@@ -0,0 +1,156 @@
|
||||
# Enhanced Caddyfile with Live Streaming Support
|
||||
# Caddy handles HTTP/HTTPS while SRS handles RTMP
|
||||
{
|
||||
# Global options
|
||||
admin off
|
||||
auto_https on
|
||||
}
|
||||
|
||||
# Main domain
|
||||
{$DOMAIN:localhost} {
|
||||
# Root directory
|
||||
root * /var/www/html
|
||||
|
||||
# PHP handling
|
||||
php_fastcgi php:9000
|
||||
|
||||
# File server for static assets
|
||||
file_server
|
||||
|
||||
# Live streaming HLS proxy to SRS
|
||||
handle /live/hls/* {
|
||||
reverse_proxy srs:8080 {
|
||||
header_up Host {upstream_hostport}
|
||||
header_up X-Real-IP {remote_host}
|
||||
header_up X-Forwarded-For {remote_host}
|
||||
header_up X-Forwarded-Proto {scheme}
|
||||
}
|
||||
}
|
||||
|
||||
# Live streaming HTTP-FLV proxy to SRS
|
||||
handle /live/flv/* {
|
||||
reverse_proxy srs:8080 {
|
||||
header_up Host {upstream_hostport}
|
||||
header_up X-Real-IP {remote_host}
|
||||
header_up X-Forwarded-For {remote_host}
|
||||
header_up X-Forwarded-Proto {scheme}
|
||||
}
|
||||
}
|
||||
|
||||
# SRS API proxy
|
||||
handle /api/srs/* {
|
||||
reverse_proxy srs:1985 {
|
||||
header_up Host {upstream_hostport}
|
||||
header_up X-Real-IP {remote_host}
|
||||
header_up X-Forwarded-For {remote_host}
|
||||
header_up X-Forwarded-Proto {scheme}
|
||||
}
|
||||
}
|
||||
|
||||
# WebSocket support for real-time features
|
||||
@websockets {
|
||||
header Connection *Upgrade*
|
||||
header Upgrade websocket
|
||||
}
|
||||
handle @websockets {
|
||||
reverse_proxy php:9000
|
||||
}
|
||||
|
||||
# Security headers
|
||||
header {
|
||||
# Security headers
|
||||
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
|
||||
X-Content-Type-Options "nosniff"
|
||||
X-Frame-Options "SAMEORIGIN"
|
||||
X-XSS-Protection "1; mode=block"
|
||||
Referrer-Policy "strict-origin-when-cross-origin"
|
||||
|
||||
# CORS for streaming
|
||||
Access-Control-Allow-Origin "*"
|
||||
Access-Control-Allow-Methods "GET, POST, OPTIONS"
|
||||
Access-Control-Allow-Headers "Content-Type, Authorization"
|
||||
}
|
||||
|
||||
# Gzip compression
|
||||
encode gzip
|
||||
|
||||
# Cache static assets
|
||||
@static {
|
||||
file
|
||||
path *.css *.js *.png *.jpg *.jpeg *.gif *.ico *.svg *.woff *.woff2 *.ttf *.eot
|
||||
}
|
||||
handle @static {
|
||||
header Cache-Control "public, max-age=31536000"
|
||||
file_server
|
||||
}
|
||||
|
||||
# Cache video segments
|
||||
@segments {
|
||||
path *.ts *.m3u8
|
||||
}
|
||||
handle @segments {
|
||||
header Cache-Control "public, max-age=10"
|
||||
file_server
|
||||
}
|
||||
|
||||
# Handle API routes
|
||||
handle /api/* {
|
||||
php_fastcgi php:9000
|
||||
}
|
||||
|
||||
# Handle uploads
|
||||
handle /upload* {
|
||||
request_body {
|
||||
max_size 2GB
|
||||
}
|
||||
php_fastcgi php:9000
|
||||
}
|
||||
|
||||
# Logging
|
||||
log {
|
||||
output file /var/log/caddy/access.log
|
||||
format json
|
||||
}
|
||||
|
||||
# Error handling
|
||||
handle_errors {
|
||||
@404 {
|
||||
expression {http.error.status_code} == 404
|
||||
}
|
||||
handle @404 {
|
||||
rewrite * /404.php
|
||||
php_fastcgi php:9000
|
||||
}
|
||||
|
||||
@500 {
|
||||
expression {http.error.status_code} >= 500
|
||||
}
|
||||
handle @500 {
|
||||
rewrite * /500.php
|
||||
php_fastcgi php:9000
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Admin subdomain (optional)
|
||||
admin.{$DOMAIN:localhost} {
|
||||
root * /var/www/html
|
||||
php_fastcgi php:9000
|
||||
|
||||
# Restrict to admin only
|
||||
basicauth {
|
||||
admin $2a$14$hNf2lJ8x.O3jQd8hdZWCOeB7oB8QrNn7fJ5F5F5F5F5F5F5F5F5F5
|
||||
}
|
||||
|
||||
# Admin-specific routes
|
||||
handle /admin/* {
|
||||
php_fastcgi php:9000
|
||||
}
|
||||
}
|
||||
|
||||
# Streaming subdomain (optional)
|
||||
stream.{$DOMAIN:localhost} {
|
||||
# Redirect all streaming traffic to main domain
|
||||
redir https://{$DOMAIN:localhost}/live{uri} permanent
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user