Files

108 lines
3.3 KiB
ApacheConf
Raw Permalink Normal View History

# 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]
# === Безопасность ===
# Запретить доступ к служебным файлам
<FilesMatch "^(latest\.json|\.htaccess|\.git.*|composer\.json|package\.json|README\.md)$">
Order deny,allow
Deny from all
</FilesMatch>
# Разрешить доступ только к API и downloads
<FilesMatch "^(api\.php)$">
Order allow,deny
Allow from all
</FilesMatch>
# Запретить листинг директорий
Options -Indexes
# Запретить выполнение PHP в папке downloads
<Directory "downloads">
php_flag engine off
RemoveHandler .php .phtml .php3
RemoveType .php .phtml .php3
</Directory>
# === CORS Headers ===
<IfModule mod_headers.c>
# Разрешить 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 файлов
<FilesMatch "\.(apk)$">
Header set Cache-Control "public, max-age=604800"
</FilesMatch>
# Запрет кеширования для API
<FilesMatch "\.(php|json)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
</FilesMatch>
</IfModule>
# === Сжатие ===
<IfModule mod_deflate.c>
# Сжимать JSON и текстовые файлы
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
# НЕ сжимать APK файлы (они уже сжаты)
SetEnvIfNoCase Request_URI \.apk$ no-gzip dont-vary
</IfModule>
# === MIME типы ===
<IfModule mod_mime.c>
AddType application/vnd.android.package-archive .apk
AddType application/json .json
</IfModule>
# === Ограничение размера загрузки ===
<IfModule mod_php7.c>
php_value upload_max_filesize 100M
php_value post_max_size 100M
php_value max_execution_time 300
php_value max_input_time 300
</IfModule>
# === Защита от инъекций ===
<IfModule mod_rewrite.c>
# Блокировать подозрительные запросы
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]
</IfModule>
# === Логирование ===
<IfModule mod_log_config.c>
# Кастомный формат логов
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D" custom
CustomLog logs/access.log custom
</IfModule>
# === Производительность ===
<IfModule mod_expires.c>
ExpiresActive On
# APK файлы кешировать на неделю
ExpiresByType application/vnd.android.package-archive "access plus 7 days"
# API не кешировать
ExpiresByType application/json "access plus 0 seconds"
</IfModule>