default.conf 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. # Dashboard service upstream (other upstreams are defined in nginx.conf)
  2. upstream dashboard_service {
  3. server dashboard:80;
  4. }
  5. server {
  6. listen 80;
  7. server_name localhost;
  8. # Security headers
  9. add_header X-Frame-Options DENY;
  10. add_header X-Content-Type-Options nosniff;
  11. add_header X-XSS-Protection "1; mode=block";
  12. add_header Referrer-Policy "strict-origin-when-cross-origin";
  13. # Authentication routes
  14. location /auth/ {
  15. proxy_pass http://auth_service;
  16. proxy_set_header Host $host;
  17. proxy_set_header X-Real-IP $remote_addr;
  18. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  19. proxy_set_header X-Forwarded-Proto $scheme;
  20. # Handle CORS preflight requests
  21. if ($request_method = 'OPTIONS') {
  22. add_header Access-Control-Allow-Origin * always;
  23. add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always;
  24. add_header Access-Control-Allow-Headers "Authorization, Content-Type" always;
  25. add_header Access-Control-Max-Age 86400 always;
  26. return 204;
  27. }
  28. # CORS headers for actual requests
  29. add_header Access-Control-Allow-Origin * always;
  30. add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always;
  31. add_header Access-Control-Allow-Headers "Authorization, Content-Type" always;
  32. }
  33. # API routes
  34. location /api/ {
  35. rewrite ^/api/(.*) /$1 break;
  36. proxy_pass http://api_service;
  37. proxy_set_header Host $host;
  38. proxy_set_header X-Real-IP $remote_addr;
  39. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  40. proxy_set_header X-Forwarded-Proto $scheme;
  41. # Handle CORS preflight requests
  42. if ($request_method = 'OPTIONS') {
  43. add_header Access-Control-Allow-Origin * always;
  44. add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always;
  45. add_header Access-Control-Allow-Headers "Authorization, Content-Type" always;
  46. add_header Access-Control-Max-Age 86400 always;
  47. return 204;
  48. }
  49. # CORS headers for actual requests
  50. add_header Access-Control-Allow-Origin * always;
  51. add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always;
  52. add_header Access-Control-Allow-Headers "Authorization, Content-Type" always;
  53. }
  54. # Health check
  55. location /health {
  56. access_log off;
  57. return 200 "healthy\n";
  58. add_header Content-Type text/plain;
  59. }
  60. # Static files and deployed apps
  61. location /apps/ {
  62. proxy_pass http://api_service;
  63. proxy_set_header Host $host;
  64. proxy_set_header X-Real-IP $remote_addr;
  65. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  66. proxy_set_header X-Forwarded-Proto $scheme;
  67. }
  68. # Storage routes (for file uploads/downloads)
  69. location /storage/ {
  70. client_max_body_size 100M;
  71. proxy_pass http://storage_service;
  72. proxy_set_header Host $host;
  73. proxy_set_header X-Real-IP $remote_addr;
  74. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  75. proxy_set_header X-Forwarded-Proto $scheme;
  76. }
  77. # Default route - Dashboard (serve as main application)
  78. location / {
  79. proxy_pass http://dashboard_service;
  80. proxy_set_header Host $host;
  81. proxy_set_header X-Real-IP $remote_addr;
  82. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  83. proxy_set_header X-Forwarded-Proto $scheme;
  84. }
  85. }
  86. # Wildcard subdomain for hosted applications
  87. server {
  88. listen 80;
  89. server_name *.localhost;
  90. # Security headers
  91. add_header X-Frame-Options DENY;
  92. add_header X-Content-Type-Options nosniff;
  93. add_header X-XSS-Protection "1; mode=block";
  94. # Extract subdomain and route to corresponding app
  95. location / {
  96. proxy_pass http://api_service/apps/$host;
  97. proxy_set_header Host $host;
  98. proxy_set_header X-Real-IP $remote_addr;
  99. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  100. proxy_set_header X-Forwarded-Proto $scheme;
  101. }
  102. }