Caddyfile 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. {
  2. admin off
  3. http_port 80
  4. }
  5. # API subdomain — прокси на backend + MinIO
  6. api.{$DOMAIN} {
  7. @minioConsole {
  8. path /minio-console/*
  9. }
  10. handle_path @minioConsole {
  11. reverse_proxy minio:9001 {
  12. header_up Host {host}
  13. header_up X-Real-IP {remote}
  14. header_up X-Forwarded-For {remote}
  15. header_up X-Forwarded-Proto {scheme}
  16. }
  17. }
  18. @s3 {
  19. path /s3/*
  20. }
  21. reverse_proxy @s3 minio:9000 {
  22. header_up Host {host}
  23. header_up X-Real-IP {remote}
  24. header_up X-Forwarded-For {remote}
  25. header_up X-Forwarded-Proto {scheme}
  26. }
  27. reverse_proxy backend:8080 {
  28. header_up Host {host}
  29. header_up X-Real-IP {remote}
  30. header_up X-Forwarded-For {remote}
  31. header_up X-Forwarded-Proto {scheme}
  32. }
  33. header {
  34. X-Content-Type-Options "nosniff"
  35. X-Frame-Options "DENY"
  36. Referrer-Policy "strict-origin-when-cross-origin"
  37. Permissions-Policy "geolocation=(self), microphone=(), camera=()"
  38. }
  39. @auth {
  40. path /api/v1/auth/*
  41. }
  42. rate_limit @auth {
  43. zone auth
  44. rate 10/minute
  45. key {remote}
  46. }
  47. }
  48. # Frontend main domain
  49. {$DOMAIN} {
  50. reverse_proxy frontend:3000 {
  51. header_up Host {host}
  52. header_up X-Real-IP {remote}
  53. header_up X-Forwarded-For {remote}
  54. header_up X-Forwarded-Proto {scheme}
  55. }
  56. header {
  57. X-Content-Type-Options "nosniff"
  58. X-Frame-Options "DENY"
  59. Referrer-Policy "strict-origin-when-cross-origin"
  60. Permissions-Policy "geolocation=(self), microphone=(), camera=()"
  61. Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://api-maps.yandex.ru; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https:; font-src 'self' data:; connect-src 'self' wss: https://api.{$DOMAIN} https://api-maps.yandex.ru; frame-ancestors 'none';"
  62. }
  63. @static {
  64. path /_next/static/*
  65. path /static/*
  66. path /images/*
  67. path /favicon.ico
  68. }
  69. header @static Cache-Control "public, max-age=31536000, immutable"
  70. encode zstd gzip
  71. }