server { listen 80; set $root_path '/var/www/html'; set $api_path '${root_path}/api/web'; set $frontend_path '${root_path}/frontend/dist'; set $authserver_host '${AUTHSERVER_HOST}'; root $root_path; charset utf-8; client_max_body_size 2M; etag on; set $request_url $request_uri; if ($host = $authserver_host) { set $request_url '/api/authserver${request_uri}'; } location / { if ($host = $authserver_host) { rewrite ^ /api/authserver$uri last; } alias $frontend_path; index index.html; try_files $uri /index.html =404; } location /api { try_files $uri $uri /api/web/index.php?$is_args$args; } location ~* \.php$ { fastcgi_pass app:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SERVER_NAME $host; fastcgi_param REQUEST_URI $request_url; try_files $uri =404; } # html файлы идут отдельно, для них будет применяться E-Tag кэширование location ~* \.html$ { root $frontend_path; access_log off; } # Раздача статики для frontend с указанием max-кэша. Сброс будет по #hash после ребилда webpackом location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|json|css|zip|rar|eot|ttf|woff|ico) { root $frontend_path; expires max; access_log off; } }