255 lines
6.5 KiB
YAML
255 lines
6.5 KiB
YAML
|
|
apiVersion: v1
|
|||
|
|
kind: ConfigMap
|
|||
|
|
metadata:
|
|||
|
|
name: nginx-conf
|
|||
|
|
namespace: cpte-wms
|
|||
|
|
annotations:
|
|||
|
|
kubesphere.io/creator: admin
|
|||
|
|
kubesphere.io/description: 配置文件
|
|||
|
|
data:
|
|||
|
|
nginx.conf: |
|
|||
|
|
worker_processes 1;
|
|||
|
|
|
|||
|
|
events {
|
|||
|
|
worker_connections 1024;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
http {
|
|||
|
|
include mime.types;
|
|||
|
|
default_type application/octet-stream;
|
|||
|
|
|
|||
|
|
# ✅ 字符编码设置
|
|||
|
|
charset utf-8;
|
|||
|
|
charset_types text/html text/plain text/css application/javascript application/json;
|
|||
|
|
|
|||
|
|
sendfile on;
|
|||
|
|
keepalive_timeout 65;
|
|||
|
|
|
|||
|
|
gzip on;
|
|||
|
|
gzip_static on;
|
|||
|
|
gzip_buffers 4 16k;
|
|||
|
|
gzip_comp_level 5;
|
|||
|
|
gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
|
|||
|
|
|
|||
|
|
server {
|
|||
|
|
listen 80;
|
|||
|
|
listen [::]:80;
|
|||
|
|
server_name 101.35.253.46;
|
|||
|
|
|
|||
|
|
# 前端配置
|
|||
|
|
location / {
|
|||
|
|
root /html/dist;
|
|||
|
|
try_files $uri $uri/ /index.html last;
|
|||
|
|
index index.html;
|
|||
|
|
expires -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 后端api配置
|
|||
|
|
location /cpte-wms/ {
|
|||
|
|
# 反向代理的java地址
|
|||
|
|
proxy_pass http://101.35.253.46:8000/cpte-wms/;
|
|||
|
|
proxy_redirect off;
|
|||
|
|
|
|||
|
|
# 设置代理消息头
|
|||
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|||
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|||
|
|
proxy_set_header Host $http_host;
|
|||
|
|
|
|||
|
|
# 设置没有缓存
|
|||
|
|
expires -1;
|
|||
|
|
|
|||
|
|
# 安全配置
|
|||
|
|
add_header Set-Cookie "Path=/; HttpOnly; Secure";
|
|||
|
|
add_header X-Content-Type-Options "nosniff";
|
|||
|
|
add_header X-XSS-Protection "1; mode=block";
|
|||
|
|
add_header X-Frame-Options "ALLOW-FROM 101.35.253.46";
|
|||
|
|
add_header Content-Security-Policy "frame-ancestors 101.35.253.46";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 健康检查端点
|
|||
|
|
location /health {
|
|||
|
|
access_log off;
|
|||
|
|
return 200 "healthy\n";
|
|||
|
|
add_header Content-Type text/plain;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 就绪检查端点
|
|||
|
|
location /ready {
|
|||
|
|
access_log off;
|
|||
|
|
return 200 "ready\n";
|
|||
|
|
add_header Content-Type text/plain;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
default.html: |
|
|||
|
|
<!DOCTYPE html>
|
|||
|
|
<html lang="zh-CN">
|
|||
|
|
<head>
|
|||
|
|
<meta charset="UTF-8">
|
|||
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|||
|
|
<title>Nginx - CPTE WMS</title>
|
|||
|
|
<style>
|
|||
|
|
body { font-family: Arial, "Microsoft YaHei", sans-serif; margin: 40px; background: #f5f5f5; }
|
|||
|
|
.container { background: white; padding: 30px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); max-width: 600px; margin: 0 auto; }
|
|||
|
|
h1 { color: #009639; }
|
|||
|
|
.info { background: #e8f5e9; padding: 15px; border-radius: 4px; margin: 20px 0; }
|
|||
|
|
.info p { margin: 8px 0; }
|
|||
|
|
</style>
|
|||
|
|
</head>
|
|||
|
|
<body>
|
|||
|
|
<div class="container">
|
|||
|
|
<h1>✅ Nginx 部署成功!</h1>
|
|||
|
|
<div class="info">
|
|||
|
|
<p><strong>项目:</strong> CPTE WMS</p>
|
|||
|
|
<p><strong>环境:</strong> Production</p>
|
|||
|
|
<p><strong>时间:</strong> <span id="time"></span></p>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<script>document.getElementById('time').innerText = new Date().toLocaleString('zh-CN');</script>
|
|||
|
|
</body>
|
|||
|
|
</html>
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
# 2. Deployment
|
|||
|
|
apiVersion: apps/v1
|
|||
|
|
kind: Deployment
|
|||
|
|
metadata:
|
|||
|
|
name: nginx
|
|||
|
|
namespace: cpte-wms
|
|||
|
|
labels:
|
|||
|
|
app: nginx
|
|||
|
|
annotations:
|
|||
|
|
kubesphere.io/description: "1.28.0"
|
|||
|
|
spec:
|
|||
|
|
replicas: 1
|
|||
|
|
strategy:
|
|||
|
|
type: RollingUpdate
|
|||
|
|
rollingUpdate:
|
|||
|
|
maxSurge: 1
|
|||
|
|
maxUnavailable: 0
|
|||
|
|
selector:
|
|||
|
|
matchLabels:
|
|||
|
|
app: nginx
|
|||
|
|
template:
|
|||
|
|
metadata:
|
|||
|
|
labels:
|
|||
|
|
app: nginx
|
|||
|
|
version: v1
|
|||
|
|
annotations:
|
|||
|
|
prometheus.io/scrape: "true"
|
|||
|
|
prometheus.io/port: "80"
|
|||
|
|
spec:
|
|||
|
|
containers:
|
|||
|
|
- name: nginx
|
|||
|
|
image: docker.io/library/nginx:1.28.0
|
|||
|
|
imagePullPolicy: IfNotPresent
|
|||
|
|
|
|||
|
|
ports:
|
|||
|
|
- name: http
|
|||
|
|
containerPort: 80
|
|||
|
|
protocol: TCP
|
|||
|
|
|
|||
|
|
resources:
|
|||
|
|
requests:
|
|||
|
|
cpu: "50m"
|
|||
|
|
memory: "64Mi"
|
|||
|
|
limits:
|
|||
|
|
cpu: "500m"
|
|||
|
|
memory: "256Mi"
|
|||
|
|
|
|||
|
|
livenessProbe:
|
|||
|
|
httpGet:
|
|||
|
|
path: /health
|
|||
|
|
port: 80
|
|||
|
|
initialDelaySeconds: 10
|
|||
|
|
periodSeconds: 10
|
|||
|
|
timeoutSeconds: 5
|
|||
|
|
failureThreshold: 3
|
|||
|
|
|
|||
|
|
readinessProbe:
|
|||
|
|
httpGet:
|
|||
|
|
path: /ready
|
|||
|
|
port: 80
|
|||
|
|
initialDelaySeconds: 5
|
|||
|
|
periodSeconds: 5
|
|||
|
|
timeoutSeconds: 3
|
|||
|
|
failureThreshold: 3
|
|||
|
|
|
|||
|
|
startupProbe:
|
|||
|
|
httpGet:
|
|||
|
|
path: /health
|
|||
|
|
port: 80
|
|||
|
|
initialDelaySeconds: 0
|
|||
|
|
periodSeconds: 5
|
|||
|
|
timeoutSeconds: 3
|
|||
|
|
failureThreshold: 30
|
|||
|
|
|
|||
|
|
volumeMounts:
|
|||
|
|
- name: nginx-conf
|
|||
|
|
mountPath: /etc/nginx/nginx.conf
|
|||
|
|
subPath: nginx.conf
|
|||
|
|
readOnly: true
|
|||
|
|
- name: nginx-html
|
|||
|
|
mountPath: /html/dist
|
|||
|
|
readOnly: true
|
|||
|
|
- name: nginx-cache
|
|||
|
|
mountPath: /var/cache/nginx
|
|||
|
|
- name: nginx-log
|
|||
|
|
mountPath: /var/log/nginx
|
|||
|
|
|
|||
|
|
env:
|
|||
|
|
- name: NGINX_ENTRYPOINT_QUIET_LOGS
|
|||
|
|
value: "true"
|
|||
|
|
|
|||
|
|
# ⚠️ 修复重点:volumes 配置
|
|||
|
|
volumes:
|
|||
|
|
- name: nginx-conf
|
|||
|
|
configMap:
|
|||
|
|
name: nginx-conf
|
|||
|
|
items:
|
|||
|
|
- key: nginx.conf
|
|||
|
|
path: nginx.conf
|
|||
|
|
- name: nginx-html
|
|||
|
|
configMap:
|
|||
|
|
name: nginx-conf
|
|||
|
|
items:
|
|||
|
|
- key: default.html
|
|||
|
|
path: index.html
|
|||
|
|
- name: nginx-cache
|
|||
|
|
emptyDir: {}
|
|||
|
|
- name: nginx-log
|
|||
|
|
emptyDir: {}
|
|||
|
|
|
|||
|
|
restartPolicy: Always
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
# 3. Service
|
|||
|
|
kind: Service
|
|||
|
|
apiVersion: v1
|
|||
|
|
metadata:
|
|||
|
|
name: nginx-service
|
|||
|
|
namespace: cpte-wms
|
|||
|
|
creationTimestamp: '2026-03-16T11:55:00Z'
|
|||
|
|
labels:
|
|||
|
|
app: nginx
|
|||
|
|
spec:
|
|||
|
|
ports:
|
|||
|
|
- name: nginx
|
|||
|
|
protocol: TCP
|
|||
|
|
port: 80
|
|||
|
|
targetPort: 80
|
|||
|
|
nodePort: 30575
|
|||
|
|
selector:
|
|||
|
|
app: nginx
|
|||
|
|
clusterIP: 10.233.51.227
|
|||
|
|
clusterIPs:
|
|||
|
|
- 10.233.51.227
|
|||
|
|
type: NodePort
|
|||
|
|
sessionAffinity: None
|
|||
|
|
externalTrafficPolicy: Cluster
|
|||
|
|
ipFamilies:
|
|||
|
|
- IPv4
|
|||
|
|
ipFamilyPolicy: SingleStack
|
|||
|
|
internalTrafficPolicy: Cluster
|