configmap.yaml 3.49 KB
# frontend-config-fixed.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: frontend-config
  namespace: ecommerce
  labels:
    app: frontend
data:
  # 这些是 Pod 环境变量引用的键
  API_URL: "https://api.awsmpc.asia"
  APP_NAME: "Ecommerce Platform"
  
  # 这些是卷挂载的文件
  nginx.conf: |
    server {
      listen 80;
      server_name localhost;
      root /usr/share/nginx/html;
      index index.html;

      # Enable gzip compression
      gzip on;
      gzip_vary on;
      gzip_min_length 1024;
      gzip_proxied any;
      gzip_comp_level 6;
      gzip_types
        text/plain
        text/css
        text/xml
        text/javascript
        application/json
        application/javascript
        application/xml+rss
        application/atom+xml
        image/svg+xml;

      # Security headers
      add_header X-Frame-Options "SAMEORIGIN" always;
      add_header X-XSS-Protection "1; mode=block" always;
      add_header X-Content-Type-Options "nosniff" always;
      add_header Referrer-Policy "no-referrer-when-downgrade" always;
      add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;

      # Handle client-side routing
      location / {
          try_files $uri $uri/ /index.html;
          add_header Cache-Control "no-cache, no-store, must-revalidate";
      }

      # Cache static assets
      location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
          expires 1y;
          add_header Cache-Control "public, immutable, max-age=31536000";
          access_log off;
      }

      # API proxy - UPDATED: forward to external API Gateway
      location /api/ {
          # 关键修改:指向外部 API Gateway 自定义域名
          proxy_pass https://api.awsmpc.asia/;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection 'upgrade';
          proxy_set_header Host api.awsmpc.asia;  # 重要:设置为 API Gateway 域名
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header X-Forwarded-Host $host;
          proxy_set_header X-Forwarded-Port $server_port;
          proxy_cache_bypass $http_upgrade;
          
          # SSL settings for external proxy
          proxy_ssl_server_name on;
          proxy_ssl_verify off;
          
          # Timeout settings
          proxy_connect_timeout 30s;
          proxy_send_timeout 30s;
          proxy_read_timeout 30s;
      }

      # Health check endpoint
      location /health {
          access_log off;
          add_header Content-Type text/plain;
          return 200 "healthy\n";
      }

      # Robots.txt
      location /robots.txt {
          add_header Content-Type text/plain;
          return 200 "User-agent: *\nDisallow: /api/\nAllow: /\n";
      }

      # Error pages
      error_page 404 /index.html;
      error_page 500 502 503 504 /50x.html;
      
      location = /50x.html {
          root /usr/share/nginx/html;
      }
    }
  
  environment.js: |
    window.env = {
      API_URL: 'https://api.awsmpc.asia',
      APP_NAME: 'Ecommerce Platform',
      NODE_ENV: 'production',
      REACT_APP_VERSION: '1.1.2',
      REACT_APP_BUILD_VERSION: '81',
      REACT_APP_GIT_COMMIT: '0630cd5e37fbd4955bf364812553170228b80ddb',
      REACT_APP_ENABLE_ANALYTICS: 'true',
      REACT_APP_ENABLE_DEBUG: 'false',
      REACT_APP_ENABLE_PWA: 'true'
    };