!Image of Nginx
这是一个高性能、优化的NGINX Docker镜像,用于快速交付网站和应用,提供性能、可靠性、安全性和可扩展性。该NGINX服务器具备高级性能、Web和移动加速、安全控制、应用监控及管理功能。
该镜像包含以下配置增强:
该系统还有更多其他优势,欢迎尝试!
第一步是构建或拉取镜像:
dockerdocker build --build-arg "NGINX_VERSION=1.15.4" -t openbridge/nginx .
将NGINX_VERSION=1.15.4替换为您偏好的版本。您也可以直接拉取镜像,见下文。
dockerdocker pull openbridge/nginx:latest
您还可以通过拉取指定版本的镜像来使用不同的NGINX版本,例如:
dockerdocker pull openbridge/nginx:1.15.3 docker pull openbridge/nginx:1.15.2 docker pull openbridge/nginx:1.15.1
查看所有可用版本请访问 [***]
通过Docker Compose:
dockerdocker-compose up -d
使用指定的yml文件:
dockerdocker-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):
docker-v /your/webapp/path:{{NGINX_DOCROOT}}:ro
可将缓存目录挂载到内存文件系统(tmpfs)以提升性能:
docker-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主配置文件配置文件的大致结构如下(可能随版本更新变化):
bash/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中定义:
nginxssl_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;
将主机上的证书目录挂载到容器中的证书路径:
docker-v /your/certs/path:/etc/letsencrypt/live/{{NGINX_SERVER_NAME}}:ro
非Let's Encrypt证书可单独挂载文件:
docker- /path/to/ssl/[***] - /path/to/ssl/[***] - /path/to/ssl/[***]
dockerversion: '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任务实现,示例:
bashcat << 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证书(若证书不存在):
bashif [[ ! -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)无缝协作:
docker&& 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为实际域名):
bash# 正常机器人(应返回200 OK) curl -A "googlebot" [***] # ***机器人(应返回空响应) curl -A "80legs" [***] curl -A "masscan" [***] # 垃圾来源(应返回空响应) curl -I [***] -e [***] curl -I [***] -e [***]
设置NGINX_DEV_INSTALL=true时,容器将安装自签名SSL证书并复制测试文件到测试目录:
bashcp /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进程、权限、缓存大小等):
nginxcheck 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 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429