
instal/nginx-proxy-pass-dockerizenginx-proxy-pass-dockerize是一个基于Nginx的轻量级反向代理镜像,旨在通过环境变量简化反向代理配置流程。无需手动编写Nginx配置文件,即可动态调整上游服务器地址、监听端口、虚拟主机、连接策略等核心参数。默认配置下,Nginx监听8080端口,并将请求代理至本地8000端口(127.0.0.1:8000),适用于Docker、Kubernetes等容器化环境中的服务请求转发场景。
使用默认配置启动(监听8080端口,代理至127.0.0.1:8000):
bashdocker run -d -p 8080:8080 instal/nginx-proxy-pass-dockerize:1.2
自定义上游服务器(例如代理至192.168.1.100:8080):
bashdocker run -d -p 8080:8080 \ -e NGINX_UPSTREAM_SERVER=192.168.1.100:8080 \ instal/nginx-proxy-pass-dockerize:1.2
以下是在Kubernetes中部署的示例(包含应用容器与代理容器):
yamlapiVersion: extensions/v1beta1 kind: Deployment metadata: name: instal-showcase-deployment namespace: instal-dashboard spec: replicas: 3 revisionHistoryLimit: 3 template: metadata: labels: app: instal-showcase spec: containers: # 应用容器(示例为gunicorn服务) - name: instal-showcase image: gcr.io/feisty-gasket-***/instal-showcase:latest ports: - name: gunicorn containerPort: 8810 readinessProbe: httpGet: path: /_probe port: gunicorn # nginx-proxy-pass容器 - name: instal-showcase-nginx image: instal/nginx-proxy-pass-dockerize:1.2 ports: - name: nginx containerPort: 8080 resources: requests: memory: "8Mi" cpu: "10m" readinessProbe: httpGet: path: /_probe port: nginx env: # 上游服务器(同一Pod内的应用容器地址) - name: NGINX_UPSTREAM_SERVER value: '127.0.0.1:8810' # 主域名 - name: NGINX_HOSTNAME value: instal.com # 额外虚拟主机 - name: NGINX_EXTRA_SERVER_NAMES value: 'showcase.instal.com' # 禁用上游连接保持 - name: NGINX_UPSTREAM_KEEPALIVE value: '0' # 启用主机重写 - name: NGINX_HOST_REWRITE_ENABLED value: '1' # 需重写的主机名 - name: NGINX_HOST_REWRITE_SERVER_NAMES value: [***]
| 环境变量名称 | 默认值 | 是否必填 | 说明 |
|---|---|---|---|
NGINX_ERROR_LOGLEVEL | info | 否 | 错误日志级别(如debug、info、warn、error) |
NGINX_WORKER_PROCESSES | 4 | 否 | Worker进程数量 |
NGINX_WORKER_CONNECTIONS | 4096 | 否 | 每个Worker进程可处理的最大连接数 |
NGINX_MULTI_ACCEPT | on | 否 | 是否允许Worker进程同时接受多个新连接(on/off) |
NGINX_UPSTREAM_SERVER | 127.0.0.1:8000 | 否 | 上游服务器地址(格式:host:port),Pod内代理可用127.0.0.1,独立服务需填DNS名称 |
NGINX_UPSTREAM_KEEPALIVE | 32 | 否 | 保持与上游服务器的连接数,设为0禁用连接保持 |
NGINX_SERVER_PORT | 8080 | 否 | Nginx监听端口 |
NGINX_HOSTNAME | - | 是(当启用主机重写时) | 主域名,用于匹配请求Host头(如instal.com) |
NGINX_EXTRA_SERVER_NAMES | - | 否 | 额外虚拟主机名,空格分隔(如"showcase.instal.com localhost") |
NGINX_CLIENT_MAX_BODY_SIZE | 70M | 否 | 客户端请求体最大大小(限制上传文件大小) |
NGINX_CLIENT_BODY_TIMEOUT | 60s | 否 | 客户端请求体传输超时时间 |
NGINX_FASTCGI_READ_TIMEOUT | 60s | 否 | FastCGI请求读取超时时间(如不使用FastCGI可忽略) |
NGINX_PROXY_READ_TIMEOUT | 60s | 否 | 从上游服务器读取响应的超时时间 |
NGINX_GZIP_TYPES | application/xml application/json | 否 | 需要启用gzip压缩的MIME类型,空格分隔 |
NGINX_KEEPALIVE_TIMEOUT | 3600s | 否 | 客户端连接保持超时时间(0禁用) |
NGINX_KEEPALIVE_REQUESTS | *** | 否 | 单个客户端连接可处理的最大请求数 |
NGINX_HOST_REWRITE_ENABLED | false | 否 | 是否启用主机重写(1/true启用,0/false禁用) |
NGINX_HOST_REWRITE_SERVER_NAMES | - | 是(当启用主机重写时) | 需重写的主机名,空格分隔(如"[***]") |
NGINX_ACCESS_LOG_TO_STDOUT | true | 否 | 是否将访问日志输出到标准输出(true/false) |
NGINX_REMOVE_XFORWARDEDFOR | false | 否 | 是否清除X-Forwarded-For头(true/false),避免错误值传递 |
NGINX_INFLATE_COMPRESSED_BODY | false | 否 | 是否启用gzip请求解压缩(通过lua脚本实现,true/false) |
灵感来源:[**]
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务