
usyfbcore/gateway本镜像基于 Apache HTTP Server 构建,定位为轻量级网关应用,旨在提供高性能、可扩展的 HTTP/HTTPS 流量管理能力。主要用途包括反向代理、负载均衡、API 路由、SSL/TLS 终止及流量控制,适用于多服务架构下的统一入口管理场景。
mod_proxy、mod_ssl、mod_rewrite 等)。docker run)默认配置启用反向代理至示例后端服务,可直接运行:
bashdocker run -d -p 80:80 --name apache-gateway apache-gateway:latest
通过环境变量指定端口及后端服务地址:
bashdocker run -d \ -p 8080:80 \ # 映射容器 80 端口至主机 8080 -e HTTP_PORT=80 \ # 容器内 HTTP 服务端口(默认 80) -e BACKEND_SERVICE_URL=[***] \ # 后端服务地址 --name apache-gateway \ apache-gateway:latest
适用于多服务协同部署场景,示例 docker-compose.yml:
yamlversion: '3.8' services: apache-gateway: image: apache-gateway:latest container_name: apache-gateway ports: - "80:80" # HTTP 端口 - "443:443" # HTTPS 端口(若启用) environment: - HTTP_PORT=80 - HTTPS_PORT=443 - BACKEND_SERVICE_URL=[***] # 后端服务地址(需与后端服务名一致) - SSL_ENABLE=true # 启用 HTTPS - SSL_CERT_PATH=/etc/apache2/ssl/cert.pem # SSL 证书路径(容器内) - SSL_KEY_PATH=/etc/apache2/ssl/key.pem # SSL 私钥路径(容器内) volumes: - ./conf/httpd.conf:/etc/apache2/httpd.conf # 挂载自定义主配置文件 - ./ssl:/etc/apache2/ssl # 挂载 SSL 证书目录(宿主机 ./ssl 包含 cert.pem 和 key.pem) - ./logs:/var/log/apache2 # 挂载日志目录(持久化日志) depends_on: - backend # 依赖后端服务启动 backend: # 示例后端服务 image: nginx:alpine container_name: backend-service ports: - "8080:80"
通过环境变量可快速调整网关核心配置,无需修改配置文件:
| 环境变量名 | 说明 | 默认值 |
|---|---|---|
HTTP_PORT | 容器内 HTTP 服务监听端口 | 80 |
HTTPS_PORT | 容器内 HTTPS 服务监听端口(启用 SSL 时) | 443 |
BACKEND_SERVICE_URL | 默认后端服务地址(反向代理目标) | http://localhost:8080 |
SSL_ENABLE | 是否启用 HTTPS(true/false) | false |
SSL_CERT_PATH | SSL 证书文件路径(容器内绝对路径) | /etc/apache2/ssl/cert.pem |
SSL_KEY_PATH | SSL 私钥文件路径(容器内绝对路径) | /etc/apache2/ssl/key.pem |
LOG_LEVEL | 日志级别(debug/info/warn/error) | info |
PROXY_TIMEOUT | 反向代理超时时间(秒) | 60 |
Apache 核心配置文件为 httpd.conf,通过挂载宿主机配置文件覆盖默认配置:
bashdocker run -d \ -p 80:80 \ -v /path/on/host/httpd.conf:/etc/apache2/httpd.conf \ # 挂载主配置 -v /path/on/host/extra:/etc/apache2/extra \ # 挂载额外配置(如 vhosts.conf) --name apache-gateway \ apache-gateway:latest
如需启用额外模块(如 mod_headers、mod_deflate),可在自定义 httpd.conf 中添加:
apacheLoadModule headers_module modules/mod_headers.so LoadModule deflate_module modules/mod_deflate.so
挂载日志目录至宿主机,避免容器重启后日志丢失:
bashdocker run -d \ -p 80:80 \ -v /path/on/host/logs:/var/log/apache2 \ # 挂载日志目录 --name apache-gateway \ apache-gateway:latest
将 SSL 证书文件存储在宿主机,并挂载至容器:
bashdocker run -d \ -p 443:443 \ -e SSL_ENABLE=true \ -v /path/on/host/ssl:/etc/apache2/ssl \ # 挂载证书目录(包含 cert.pem 和 key.pem) --name apache-gateway \ apache-gateway:latest
以下示例实现:将 HTTPS 请求(443 端口)反向代理至后端 HTTP 服务(backend:8080),并启用日志持久化。
yamlversion: '3.8' services: apache-gateway: image: apache-gateway:latest container_name: apache-gateway ports: - "443:443" environment: - HTTPS_PORT=443 - SSL_ENABLE=true - BACKEND_SERVICE_URL=[***] - LOG_LEVEL=info volumes: - ./ssl:/etc/apache2/ssl # 宿主机 ./ssl 目录包含 cert.pem 和 key.pem - ./logs:/var/log/apache2 # 日志持久化 - ./conf/extra/vhosts.conf:/etc/apache2/extra/vhosts.conf # 自定义虚拟主机配置 depends_on: - backend backend: image: nginx:alpine container_name: backend-service ports: - "8080:80" volumes: - ./backend/html:/usr/share/nginx/html # 后端静态资源
自定义虚拟主机配置(./conf/extra/vhosts.conf):
apache<VirtualHost *:443> ServerName gateway.example.com ProxyPass / [***] ProxyPassReverse / [***] SSLEngine on SSLCertificateFile "/etc/apache2/ssl/cert.pem" SSLCertificateKeyFile "/etc/apache2/ssl/key.pem" # 启用压缩 AddOutputFilterByType DEFLATE text/html text/css application/json </VirtualHost>
www-data)对挂载资源有读权限,建议宿主机目录权限设置为 755,文件权限 644。docker run --rm apache-gateway:latest httpd -t 验证配置文件语法正确性。--memory、--cpus 限制容器资源,避免过度占用主机资源。docker run --rm apache-gateway:latest httpd -v 查看 Apache 版本)。



manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务