下载工作台
PaaS 组件实战

接入、搜索与对象存储:Nginx / ES / MinIO

试读上半部分 · 解锁后可读全文

第 5 章 · 接入、搜索与对象存储:Nginx / Elasticsearch / MinIO


5.1 Nginx 1.27

适用场景

选用作用
静态资源(HTML/CSS/JS/图片)高性能文件服务
反向代理隐藏后端 API,统一入口
负载均衡upstream 多后端 Pod
URL 重写、限流locationlimit_req

TLS 终止、多域名路由:生产建议 集群插件 Nginx Ingress + Ingress 规则;Nginx 容器适合 NodePort 直出 或集群内 Sidecar。

商店部署参数

idnginx
镜像nginx:1.27-alpine
端口80
PVC可选;静态站可挂载 /usr/share/nginx/html

核心配置语法(nginx.conf / conf.d/*.conf

# 上游(K8s Service 名)
upstream api_backend {
    server api:8080;
    keepalive 32;
}

server {
    listen 80;
    server_name _;

    # 静态
    location / {
        root /usr/share/nginx/html;
        index index.html;
        try_files $uri $uri/ /index.html;
    }

    # API 反代
    location /api/ {
        proxy_pass http://api_backend/;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Connection "";
    }

    # 健康检查
    location /healthz {
        return 200 'ok';
        add_header Content-Type text/plain;
    }
}

常用指令

指令用途
proxy_pass反向代理
rewriteURL 重写
limit_req_zone限流
gzip on压缩
client_max_body_size上传大小限制

部署与生效

  1. 商店部署,NodePort 暴露 80
  2. 改配置:终端 编辑 /etc/nginx/conf.d/default.conf
  3. 校验:nginx -t
  4. 热载:nginx -s reload应用部署 → 重启
  5. 生产:配置写入 PVC 或 ConfigMap(工作负载 YAML 挂载)

业务集成

前端构建产物 dist/ 拷入 html 目录;API 基址设为相对路径 /api/,由 Nginx 转发到 api:8080


5.2 Elasticsearch 8.14

适用场景

选用场景
全文检索商品搜索、文档搜索
日志分析(ELK)配合 Kibana、Filebeat
聚合分析销售报表、用户行为统计

不选用:主业务事务库;小数据量 LIKE 够用(SQL 即可)。

商店部署参数

idelasticsearch
镜像elasticsearch:8.14.0
端口9200(HTTP API)
PVC30 Gi/usr/share/elasticsearch/data
资源大型 · 4 核 8Gi

环境变量

          env:
            - name: discovery.type
              value: "single-node"
            - name: xpack.security.enabled
              value: "false"
            - name: ES_JAVA_OPTS
              value: "-Xms2g -Xmx2g"
            - name: cluster.name
              value: "es-app"
            - name: node.name
              value: "es-node-1"

生产开启安全:

            - name: xpack.security.enabled
              value: "true"
            - name: ELASTIC_PASSWORD
              value: "强密码"

连接语法

HTTP

http://elasticsearch:9200

带认证

https://elastic:密码@elasticsearch:9200

Python elasticsearch 客户端

from elasticsearch import Elasticsearch
es = Elasticsearch(["http://elasticsearch:9200"])

REST API 语法

# 集群健康
curl http://elasticsearch:9200/_cluster/health?pretty

# 创建索引
curl -X PUT http://elasticsearch:9200/products -H 'Content-Type: application/json' -d'

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。