本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

!Image of Nginx
这是一个高性能、优化的NGINX Docker镜像,用于快速交付网站和应用,提供性能、可靠性、安全性和可扩展性。该NGINX服务器具备高级性能、Web和移动加速、安全控制、应用监控及管理功能。
该镜像包含以下配置增强:
该系统还有更多其他优势,欢迎尝试!
第一步是构建或拉取镜像:
docker build --build-arg "NGINX_VERSION=1.15.4" -t openbridge/nginx .
将NGINX_VERSION=1.15.4替换为您偏好的版本。您也可以直接拉取镜像,见下文。
docker pull openbridge/nginx:latest
您还可以通过拉取指定版本的镜像来使用不同的NGINX版本,例如:
docker pull openbridge/nginx:1.15.3 docker pull openbridge/nginx:1.15.2 docker pull openbridge/nginx:1.15.1
查看所有可用版本请访问 [***]
通过Docker Compose:
docker-compose up -d
使用指定的yml文件:
docker-compose -f ./compose/html.yml up -d --remove-orphans
提供了示例HTML配置文件./compose/html.yml和PHP配置文件./compose/php.yml,可供快速启动使用。
请注意,/conf/*目录中的配置文件是预设的,是特定实现偏好和需求的工作示例。
提供了两种预构建配置:一种是/conf/html/*下的HTML站点配置,另一种是/conf/php/*下的PHP站点配置。应用会根据NGINX_CONFIG环境变量查找要使用的配置目录。例如,若运行HTML站点并使用/conf/html/*配置,设置NGINX_CONFIG=html;若运行PHP站点并使用/conf/php/*配置,设置NGINX_CONFIG=php;若使用自定义配置/conf/<my-custom-config>/*,设置NGINX_CONFIG=my-custom-config。
基础NGINX配置位于/conf/basic/*,设置NGINX_CONFIG=basic可运行基础NGINX环境。
/conf目录中的ENV配置包含以下核心变量:
NGINX_DOCROOT:设置默认网站根目录,未设置时默认值为/usr/share/nginx/htmlNGINX_SERVER_NAME:设置nginx.conf中的默认服务器名,未设置时默认值为localhostNGINX_CONFIG:设置镜像的默认配置目录,参见/conf目录下的html和php配置示例NGINX_PROXY_UPSTREAM:设置反向代理的上游服务器,默认值为localhost:8080(容器内本地服务)REDIS_UPSTREAM:设置Redis缓存服务器的上游服务器,默认值为server localhost:6379;若使用PHP,需设置PHP-FPM端点:
PHP_FPM_UPSTREAM:设置PHP-FPM上游服务器,默认值为server localhost:9000;更多示例请查看/env目录。
以下是站点的目录约定:
/etc/nginx/sites-available/ – 不同站点的Nginx配置文件/usr/share/nginx/html – 网站根目录/usr/share/nginx/html/example.com – (可选)域名特定的内容目录要挂载网站应用或HTML文件,需将主机上的文件目录挂载到容器中,并确保在运行命令或docker-compose.yml中设置NGINX_DOCROOT(默认值为/usr/share/nginx/html):
-v /your/webapp/path:{{NGINX_DOCROOT}}:ro
可将缓存目录挂载到内存文件系统(tmpfs)以提升性能:
-v /tmpfs:{{CACHE_PREFIX}}:ro
如需自定义配置文件,可类似挂载配置目录,确保Nginx和PHP能正确识别文件位置。
/conf/配置文件结构以下是镜像中配置文件的结构,包含用于浏览器内容缓存和重定向的Nginx map设置,内容缓存基于MIME类型实现。
/etc/nginx/ – 所有Nginx相关配置/etc/nginx/bots.d/* – 机器人和垃圾信息配置文件/etc/nginx/conf.d/* – 核心配置文件(如PHP、安全、SEO等)/etc/nginx/fastcgi.d/* – FastCGI基础配置/etc/nginx/geo.d/* – IP允许/拒绝配置文件/etc/nginx/header.d/* – HTTP、代理和FastCGI头配置/etc/nginx/map.d/* – 缓存、访问规则、重定向等配置文件/etc/nginx/redis.d/* – Redis缓存配置文件/etc/nginx/site-available/* – 虚拟主机配置/etc/nginx/status.d/* – Nginx服务器状态访问配置/etc/nginx/upstream.d/* – 上游服务器配置/etc/nginx/nginx.conf – Nginx主配置文件配置文件的大致结构如下(可能随版本更新变化):
/etc/nginx/ ├── nginx.conf ├── conf.d/ │ ├── gzip.conf │ ├── ssl.conf │ ├── secure.conf │ ├── location.conf │ ├── seo.conf │ └── nocache.conf ├── map.d │ ├── cache/ │ │ ├── expires.map │ └── redirects/ │ ├── example.map │ ├── pages.map ├── bot.d ├── fastcgi.d ├── header.d ├── geo.d ├── redis.d ├── status.d ├── upstream.d ├── sites-available
map.d配置说明map.d目录使用Nginx ngx_http_map_module实现条件配置,替代if条件语句,符合Nginx最佳实践:
image/gif max;/blog/ [***]/wp-admin/目录默认使用letsencrypt的SSL证书/密钥、路径和命名约定,也支持其他SSL证书,需遵循以下路径结构:
/etc/letsencrypt/live/${NGINX_SERVER_NAME}/; ├── server │ ├── cert.pem │ ├── chain.pem │ ├── fullchain.pem │ └── privkey.pem
SSL证书的默认路径在/conf.d/ssl.conf中定义:
ssl_certificate /etc/letsencrypt/live/{{NGINX_SERVER_NAME}}/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/{{NGINX_SERVER_NAME}}/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/{{NGINX_SERVER_NAME}}/chain.pem;
将主机上的证书目录挂载到容器中的证书路径:
-v /your/certs/path:/etc/letsencrypt/live/{{NGINX_SERVER_NAME}}:ro
非Let's Encrypt证书可单独挂载文件:
- /path/to/ssl/[***] - /path/to/ssl/[***] - /path/to/ssl/[***]
version: '3.1' services: nginx: image: openbridge/nginx:latest container_name: nginx depends_on: - redis ports: - 80:80 - 443:443 tty: true restart: always tmpfs: /var/cache volumes: - /path/user/html:/usr/share/nginx/html - /etc/letsencrypt/live/[***] - /etc/letsencrypt/live/[***] - /etc/letsencrypt/live/[***] ulimits: nproc: 65535 nofile: soft: 49999 hard: 99999 env_file: - ./env/prod.env redis: image: redis:alpine container_name: redis restart: always volumes: site:
在主机(非Docker容器)上安装certbot:
curl -O [***]chmod +x certbot-automv certbot-auto /usr/local/bin/certbot-auto/usr/local/bin/certbot-auto certonly -n --debug --agree-tos --email *** --standalone -d *.openbridge.com证书更新可通过cron任务实现,示例:
cat << EOF > /tmp/crontab.conf 55 4,16 * * * /opt/eff.org/certbot/venv/local/bin/pip install --upgrade certbot 59 4,16 * * * /usr/local/bin/certbot certonly -n --debug --agree-tos --pre-hook="docker stop nginx" --post-hook="docker start nginx" --standalone -d *.openbridge.com > /dev/null EOF cat /tmp/crontab.conf | crontab - && crontab -l
设置NGINX_DEV_INSTALL=true时,容器将自动安装自签名SSL证书(若证书不存在):
if [[ ! -f /etc/letsencrypt/live/${NGINX_SERVER_NAME}/privkey.pem ]] || [[ ! -f /etc/letsencrypt/live/${NGINX_SERVER_NAME}/fullchain.pem ]]; then echo "OK: Installing development SSL certificates..." mkdir -p /etc/letsencrypt/live/${NGINX_SERVER_NAME} /usr/bin/env bash -c "openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj /C=US/ST=MA/L=Boston/O=ACMECORP/CN=${NGINX_SERVER_NAME} -keyout /etc/letsencrypt/live/${NGINX_SERVER_NAME}/privkey.pem -out /etc/letsencrypt/live/${NGINX_SERVER_NAME}/fullchain.pem" cp /etc/letsencrypt/live/${NGINX_SERVER_NAME}/fullchain.pem /etc/letsencrypt/live/${NGINX_SERVER_NAME}/chain.pem else echo "INFO: SSL files already exist. Not installing dev certs." fi
openssl dhparam -out dhparam.pem 2048,挂载到/etc/pki/tls/dhparam.pem标准化用户、组及UID/GID,与其他应用(如PHP-FPM)无缝协作:
&& addgroup -g 82 -S www-data \ && adduser -u 82 -D -S -h /var/cache/php-fpm -s /sbin/nologin -G www-data www-data \
集成“终极Nginx恶意机器人、用户代理、垃圾来源拦截器”,可阻止广告软件、恶意软件、勒索软件、点击劫持、SEO爬虫等,包含4000+恶意来源规则。
在另一台Linux机器上运行以下命令(替换yourdomain.com为实际域名):
# 正常机器人(应返回200 OK) curl -A "googlebot" [***] # 恶意机器人(应返回空响应) curl -A "80legs" [***] curl -A "masscan" [***] # 垃圾来源(应返回空响应) curl -I [***] -e [***] curl -I [***] -e [***]
设置NGINX_DEV_INSTALL=true时,容器将安装自签名SSL证书并复制测试文件到测试目录:
cp /tmp/index.php "${NGINX_DOCROOT}"/testing/test_info.php cp /tmp/test.html "${NGINX_DOCROOT}"/testing/test_nginx.html
可通过以下URL验证:
https://localhost/testing/test_nginx.html:HTML测试页面(显示"hello world")https://localhost/testing/test_info.php:PHP信息页面(需配合PHP-FPM容器)通过Monit监控容器内服务。若Monit检测到Nginx异常,将执行STOP命令关闭容器。若运行时使用--restart unless-stopped参数,容器将自动重启。
示例监控配置(检查Nginx进程、权限、缓存大小等):
check process nginx with pidfile "/var/run/nginx.pid" if not exist for 5 cycles then restart start program = "/usr/bin/env bash -c '/usr/sbin/nginx -g daemon off'" with timeout 60 seconds stop program = "/usr/bin/env bash -c '/usr/sbin/nginx -s stop'" every 3 cycles if cpu > 80% for 10 cycles then exec "/usr/bin/env bash -c '/usr/sbin/nginx -s stop'" check program wwwdata-permissions with path /usr/bin/env bash -c "check_wwwdata permission" every 3 cycles if status != 0 then exec "/usr/bin/env bash -c 'find {{NGINX_DOCROOT}} -type d -exec chmod 755 {} \; && find {{NGINX_DOCROOT}} -type f -exec chmod 644 {} \;'"
监控脚本(如check_folder、check_host)可验证权限、缓存大小及服务响应,确保SPA渲染服务正确返回内容,避免SEO问题。

免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429