拉取nginx镜像
网络良好直接从官方拉取
docker pull nginx:1.24.0
网络不行就用这个
docker pull docker.1ms.run/nginx:1.24.0-alpine
创建好对应的文件夹挂载
这里根据要存放的路径自行修改
mkdir -p /root/nginx/conf.d 这个目录中放网站单独的配置文件,用于分模块 (nginx.conf是主文件)
mkdir -p /root/nginx/wwwroot 这个目录放所有的网站文件
mkdir -p /root/nginx/logs 运行日志,在conf文件中配置让写到这目录
mkdir -p /root/nginx/ssl 放ssl证书,方便从容器外宿主机更新
启动容器运行
-d后台运行
--name nginx容器名称
--restart=always服务器重启或容器异常退出时自动拉起
-p 80:80 -p 443:443映射 HTTP 和 HTTPS 端口
-v 宿主机:容器内:ro挂载目录,:ro 表示只读(防止容器意外修改配置)
/var/log/nginx日志目录挂载到宿主机,方便查看
docker run -d \
--name nginx \
--restart=always \
-p 81:80 \
-p 442:443 \
-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /root/nginx/conf.d:/etc/nginx/conf.d:ro \
-v /root/nginx/wwwroot:/wwwroot/:ro \
-v /root/nginx/logs:/var/log/nginx \
-v /root/nginx/ssl:/etc/nginx/ssl:ro \
docker.1ms.run/nginx:1.24.0-alpine
创建nginx.conf主文件
1,主文件里就是一些nginx的相关配置,最主要的是两部分,日志配置+ conf.d/*.conf导入,其他都是一些限制和优化
可以让ai直接生成一个默认主配置模版
2,编写网站serve块配置
user nginx;
worker_processes auto;
error_log /var/log/nginx/nginx_error.log crit;
pid /var/log/nginx/nginx.pid;
worker_rlimit_nofile 51200;
events
{
use epoll;
worker\_connections 20;
multi\_accept on;
}
http {
include mime.types;
#include luawaf.conf;
default\_type application/octet-stream;
server\_names\_hash\_bucket\_size 512;
client\_header\_buffer\_size 32k;
large\_client\_header\_buffers 4 32k;
client\_max\_body\_size 50m;
sendfile on;
tcp\_nopush on;
keepalive\_timeout 30;
tcp\_nodelay on;
fastcgi\_connect\_timeout 300;
fastcgi\_send\_timeout 300;
fastcgi\_read\_timeout 300;
fastcgi\_buffer\_size 64k;
fastcgi\_buffers 4 64k;
fastcgi\_busy\_buffers\_size 128k;
fastcgi\_temp\_file\_write\_size 256k;
fastcgi\_intercept\_errors on;
gzip on;
gzip\_min\_length 1k;
gzip\_buffers 4 16k;
gzip\_http\_version 1.1;
gzip\_comp\_level 2;
gzip\_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
gzip\_vary on;
gzip\_proxied expired no-cache no-store private auth;
gzip\_disable "MSIE \[1-6\]\\.";
limit\_conn\_zone $binary\_remote\_addr zone=perip:10m;
limit\_conn\_zone $server\_name zone=perserver:10m;
server\_tokens off;
access\_log off;
## 这里是加载其他serve模块关键
include /etc/nginx/conf.d/*.conf;
}
日志的排查
tail -f error.log 排查nginx日志挺详细的,启动报错信息就按着日志一步一步修即可,日志很重要

如何测试域名访问(ip+端口访问 监听的域名)
# 查看完整响应头
curl -H "Host: your-domain.com" http://服务器IP:81 -v
# 如果是HTTPS,加上 -k 跳过证书验证
curl -k -H "Host: your-domain.com" https://服务器IP:81
优点:不需要修改系统文件,适合快速调试。
注意点和说明
-
主配置文件 (nginx.conf):这是总入口。在默认的官方镜像里,它通常已经包含了一行 include /etc/nginx/conf.d/*.conf;。这意味着,你只要把自定义的站点配置(如 my-site.conf)放入 conf.d 目录,就会被自动加载,不需要每次手动指定。
-
不指定也能运行:启动时即使不挂载任何配置,容器内也有默认的 nginx.conf 和 conf.d/default.conf,能直接运行一个欢迎页。你用 -v 挂载,就是为了用自己的配置覆盖掉这些默认文件。