server { listen 80; root $root_path; charset utf-8; index index.html; etag on; # Это можно раскоментить для целей отладки # rewrite_log on; # error_log /var/log/nginx/error.log debug; set $root_path '/var/www/html'; set $frontend_path '${root_path}/frontend/dist'; set $request_url $request_uri; set $host_with_uri '${host}${request_uri}'; if ($host_with_uri ~ '^${AUTHSERVER_HOST}/auth') { set $request_url '/api/authserver${request_uri}'; rewrite ^/auth /api/authserver$uri last; } if ($host_with_uri ~ '^${AUTHSERVER_HOST}/session') { set $request_url '/api/minecraft${request_uri}'; rewrite ^/session /api/minecraft$uri last; } if ($host_with_uri ~ '^${AUTHSERVER_HOST}/api/(user|profiles)') { set $request_url '/api/mojang${request_uri}'; rewrite ^/api/(user|profiles) /api/mojang$uri last; } location / { alias $frontend_path; try_files $uri /index.html =404; } location /api { try_files $uri $uri /api/web/index.php?$is_args$args; } location ~* \.php$ { fastcgi_pass php: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|woff2|ico)$ { root $frontend_path; expires max; etag off; access_log off; } # Запросы к статике для email, их нужно запустить внутрь vendor location ^~ /images/emails/assets { rewrite ^/images/emails/assets/(.+)$ /vendor/ely/emails-renderer/dist/assets/$1 last; } location ^~ /vendor/ely/emails-renderer/dist/assets { alias '${root_path}/vendor/ely/email-renderer/dist/assets'; try_files $uri =404; } }