default.conf 3.1 KB

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