ServerRoot "/usr/local/apache2"
ServerName localhost
Listen 80

LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule dir_module modules/mod_dir.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule headers_module modules/mod_headers.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule unixd_module modules/mod_unixd.so

User www-data
Group www-data

TypesConfig conf/mime.types
DirectoryIndex disabled

ErrorLog /proc/self/fd/2
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog /proc/self/fd/1 common

DocumentRoot "/var/www/html/public"

<Directory />
    AllowOverride None
    Require all denied
</Directory>

# --- Static assets are served from the mounted project, everything else is
# --- proxied to the application container. The rewrites live in the directory
# --- block because only there does REQUEST_FILENAME hold a real path.
ProxyPreserveHost On
ProxyTimeout 300

<Directory "/var/www/html/public">
    Options -Indexes +FollowSymLinks
    AllowOverride None
    Require all granted

    RewriteEngine On

    RewriteRule "(^|/)\.(?!well-known)" - [F]

    RewriteCond %{REQUEST_URI} \.php$
    RewriteRule ^(.*)$ http://laravel.test:80/$1 [P,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ http://laravel.test:80/$1 [P,L]
</Directory>

ProxyPassReverse / http://laravel.test:80/

<FilesMatch "\.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|webp|avif)$">
    Header set Cache-Control "public, max-age=31536000, immutable"
</FilesMatch>

Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"

LimitRequestBody 104857600

AddOutputFilterByType DEFLATE text/plain text/css text/xml application/json application/javascript image/svg+xml
