# Umbrix Update Server - Apache Configuration # === ЧПУ (Красивые URL) === RewriteEngine On # Редирект с index.php на api.php RewriteRule ^index\.php$ api.php [L,R=301] # API endpoints RewriteRule ^api/latest$ api.php [L,QSA] RewriteRule ^api/version$ api.php [L,QSA] # === Безопасность === # Запретить доступ к служебным файлам Order deny,allow Deny from all # Разрешить доступ только к API и downloads Order allow,deny Allow from all # Запретить листинг директорий Options -Indexes # Запретить выполнение PHP в папке downloads php_flag engine off RemoveHandler .php .phtml .php3 RemoveType .php .phtml .php3 # === CORS Headers === # Разрешить CORS для API Header set Access-Control-Allow-Origin "*" Header set Access-Control-Allow-Methods "GET, OPTIONS" Header set Access-Control-Allow-Headers "Content-Type" # Кеширование для APK файлов Header set Cache-Control "public, max-age=604800" # Запрет кеширования для API Header set Cache-Control "no-cache, no-store, must-revalidate" Header set Pragma "no-cache" Header set Expires "0" # === Сжатие === # Сжимать JSON и текстовые файлы AddOutputFilterByType DEFLATE application/json AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html # НЕ сжимать APK файлы (они уже сжаты) SetEnvIfNoCase Request_URI \.apk$ no-gzip dont-vary # === MIME типы === AddType application/vnd.android.package-archive .apk AddType application/json .json # === Ограничение размера загрузки === php_value upload_max_filesize 100M php_value post_max_size 100M php_value max_execution_time 300 php_value max_input_time 300 # === Защита от инъекций === # Блокировать подозрительные запросы RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) RewriteRule ^(.*)$ - [F,L] # === Логирование === # Кастомный формат логов LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D" custom CustomLog logs/access.log custom # === Производительность === ExpiresActive On # APK файлы кешировать на неделю ExpiresByType application/vnd.android.package-archive "access plus 7 days" # API не кешировать ExpiresByType application/json "access plus 0 seconds"