 10bc8fe7cb
			
		
	
	10bc8fe7cb
	
	
		
			
	
		
	
	
		
			All checks were successful
		
		
	
	Build and Push Docker Image / build (push) Successful in 1m42s
				
			- Introduced Dockerfile for multi-stage build process using Node.js and Nginx. - Added .dockerignore to exclude unnecessary files from Docker context. - Created nginx.conf for server configuration, including gzip compression and SPA routing. - Implemented Gitea CI/CD workflow for building and pushing Docker images on version tags.
		
			
				
	
	
		
			74 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Nginx Configuration File
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Nginx Configuration File
		
	
	
	
	
	
| user nginx;
 | |
| worker_processes auto;
 | |
| error_log /var/log/nginx/error.log warn;
 | |
| pid /var/run/nginx.pid;
 | |
| 
 | |
| events {
 | |
|     worker_connections 1024;
 | |
| }
 | |
| 
 | |
| http {
 | |
|     include /etc/nginx/mime.types;
 | |
|     default_type application/octet-stream;
 | |
| 
 | |
|     log_format main '$remote_addr - $remote_user [$time_local] "$request" '
 | |
|                     '$status $body_bytes_sent "$http_referer" '
 | |
|                     '"$http_user_agent" "$http_x_forwarded_for"';
 | |
| 
 | |
|     access_log /var/log/nginx/access.log main;
 | |
| 
 | |
|     sendfile on;
 | |
|     tcp_nopush on;
 | |
|     tcp_nodelay on;
 | |
|     keepalive_timeout 65;
 | |
|     types_hash_max_size 2048;
 | |
| 
 | |
|     # Gzip 压缩配置
 | |
|     gzip on;
 | |
|     gzip_vary on;
 | |
|     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/rss+xml font/truetype font/opentype 
 | |
|                application/vnd.ms-fontobject image/svg+xml;
 | |
| 
 | |
|     server {
 | |
|         listen 80;
 | |
|         server_name localhost;
 | |
|         root /usr/share/nginx/html;
 | |
|         index index.html;
 | |
| 
 | |
|         # 安全头
 | |
|         add_header X-Frame-Options "SAMEORIGIN" always;
 | |
|         add_header X-Content-Type-Options "nosniff" always;
 | |
|         add_header X-XSS-Protection "1; mode=block" always;
 | |
| 
 | |
|         # 静态资源缓存
 | |
|         location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
 | |
|             expires 1y;
 | |
|             add_header Cache-Control "public, immutable";
 | |
|         }
 | |
| 
 | |
|         # SPA 路由支持 - 所有请求都返回 index.html
 | |
|         location / {
 | |
|             try_files $uri $uri/ /index.html;
 | |
|         }
 | |
| 
 | |
|         # 健康检查端点
 | |
|         location /health {
 | |
|             access_log off;
 | |
|             return 200 "healthy\n";
 | |
|             add_header Content-Type text/plain;
 | |
|         }
 | |
| 
 | |
|         # 错误页面
 | |
|         error_page 404 /index.html;
 | |
|         error_page 500 502 503 504 /50x.html;
 | |
|         location = /50x.html {
 | |
|             root /usr/share/nginx/html;
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 |