
本镜像为定制化Nginx服务器镜像,预配置SSL支持及includes目录,旨在简化开发环境中的HTTPS代理部署。镜像包含默认SSL证书路径、预定义的includes配置片段,支持通过环境变量动态配置服务器名称,适用于需要连接后端服务(如Varnish缓存、PHP-FPM应用服务器)的场景。
/etc/ssl/phpro,包含通配符证书star_phpro_local.pem及密钥star_phpro_local.key,支持*.phpro.local域名AES256+EECDH:AES256+EDH:!aNULL/etc/nginx/includes,可存放通用配置片段并通过include指令引用${SERVER_NAME}环境变量设置服务器名称client_max_body_size(默认512M或108M,可调整)proxy_buffer_size、proxy_buffers等)示例1:基础SSL代理配置(ssl-proxy.template)
适用于直接代理至Varnish缓存服务的场景:
nginxserver { listen 443 ssl http2; server_name ${SERVER_NAME}; ssl_certificate /etc/ssl/phpro/star_phpro_local.pem; ssl_certificate_key /etc/ssl/phpro/star_phpro_local.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL; client_max_body_size 512M; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { proxy_pass http://varnish:6081; proxy_set_header Host ${SERVER_NAME}; proxy_set_header X-Forwarded-Proto https; proxy_read_timeout 600; proxy_connect_timeout 600; proxy_redirect off; proxy_set_header X-VerifiedViaNginx yes; proxy_set_header Proxy ""; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; } }
示例2:使用includes的配置
通过includes目录引用通用配置片段,简化server配置:
nginxserver { listen 443 ssl http2; server_name ${SERVER_NAME}; ssl_certificate /etc/ssl/phpro/star_phpro_local.pem; ssl_certificate_key /etc/ssl/phpro/star_phpro_local.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL; client_max_body_size 108M; access_log /var/log/nginx/access.log; include /etc/nginx/includes/${NGINX_FILE}.nginx.conf; }
/etc/nginx/includes目录下的配置片段示例(如app.nginx.conf),包含应用服务器代理、静态文件处理等通用配置:
nginxroot /app/web; location / { # 尝试直接提供文件,否则转发至index.php try_files $uri /app.php$is_args$args; } # 可选:禁用资产目录回退到PHP脚本(提升性能,但不显示Symfony 404页面) # location /bundles { # try_files $uri =404; # } location ~ ^/app\.php(/|$) { fastcgi_pass application:9000; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; # 当使用符号链接将文档根目录链接到应用的当前版本时,应将实际应用路径传递给PHP-FPM # 否则PHP OPcache可能无法正确检测PHP文件的更改 fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; # 阻止包含前端控制器的URI访问(如http://domain.tld/index.php/some-path将返回404) # 移除internal指令可允许此类URI internal; } # 对所有不匹配前端控制器的PHP文件返回404,防止访问不需要公开的PHP文件 location ~ \.php$ { return 404; } gzip on; gzip_disable "msie6"; gzip_comp_level 6; gzip_min_length 1100; gzip_buffers 16 8k; gzip_proxied any; gzip_types text/plain text/css text/js text/xml text/javascript application/javascript application/x-javascript application/json application/xml application/xml+rss image/svg+xml; gzip_vary on;
通过docker-compose部署,挂载自定义配置模板,设置环境变量并生成Nginx配置:
yamlversion: '3' services: nginx: image: docphpro/nginx:1.18.0 container_name: edmac-nginx-proxy volumes: # 挂载自定义Nginx配置模板至容器 - ./sysadmin/docker/nginx/ssl-proxy.template:/etc/nginx/conf.d/ssl-proxy.template:ro environment: # 设置服务器名称(需匹配通配符证书域名,如edmac.phpro.local) - SERVER_NAME=edmac.phpro.local # 生成Nginx配置并启动服务 command: /bin/sh -c "envsubst < /etc/nginx/conf.d/ssl-proxy.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'" # 链接后端服务(如Varnish缓存) links: - varnish ports: - "80:80" # HTTP端口(可选,根据需求开放) - "443:443" # HTTPS端口
配置说明:
volumes:挂载本地Nginx配置模板至容器,模板中使用${SERVER_NAME}等环境变量environment:SERVER_NAME指定代理服务器域名,需与SSL证书匹配command:通过envsubst替换环境变量生成最终配置文件,并以非守护进程模式启动Nginxlinks:链接至后端服务(如Varnish),确保Nginx可访问后端服务地址(如varnish:6081)
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务