Docker安装Nginx,轻松搭建属于自己的Web服务器

拉取镜像

bash 复制代码
docker pull nginx

创建挂载目录

bash 复制代码
# 在容器中一次性创建多个目录
mkdir -p /docker/nginx/{conf,html,log}

启动临时容器

bash 复制代码
docker run --name nginx -d nginx

复制配置文件到宿主机

bash 复制代码
docker cp nginx:/etc/nginx/nginx.conf /docker/nginx/conf
docker cp nginx:/etc/nginx/conf.d /docker/nginx/conf
docker cp nginx:/usr/share/nginx/html /docker/nginx
docker cp nginx:/var/log/nginx /docker/nginx/log

配置

在宿主机的 /docker/nginx/conf/nginx.conf 文件中配置如下内容:

注意:以下配置仅供参考,可根据自身需求进行调整

bash 复制代码
# 主配置文件
user nginx;  # 指定运行用户
worker_processes auto;  # 根据CPU核心数自动分配工作进程数
worker_rlimit_nofile 65535;  # 设置每个进程的最大文件句柄数
​
error_log /var/log/nginx/error.log;  # 错误日志路径
pid /var/run/nginx.pid;  # 进程ID文件路径
​
# 事件模型
events {
    worker_connections 1024;  # 每个进程的最大连接数,默认1024
    use epoll;  # 使用epoll事件模型,适合高并发场景
    accept_mutex off; # 高并发时关闭互斥锁
}
​
# HTTP核心模块
http {
    include mime.types;  # 包含MIME类型文件
    default_type application/octet-stream;  # 默认MIME类型
    
    # 日志格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log /var/log/nginx/access.log main;  # 访问日志路径
    
    # 传输优化
    sendfile           on;     # 零拷贝传输
    tcp_nopush         on;     # 优化数据包发送
    tcp_nodelay        on;     # 禁用Nagle算法
    keepalive_timeout  30s;    # 连接保持时间
    reset_timedout_connection on; # 超时后重置连接
    
     # 虚拟主机配置
    server {
        listen 80;  # 监听80端口
        server_name localhost;  # 域名
​
        location / {
            root /usr/share/nginx/html;  # 默认根目录
            try_files $uri $uri/ /index.html; # 按照顺序检查请求的URI是否对应一个文件或目录,如果没有找到,则返回根目录下的index.html文件
        }
        # 反向代理配置
        location /api {
            proxy_pass http://localhost:8080; # 后端服务地址(实际的生产环境,这里配置的是域名,如:chaoup.cn)
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
​
        # 错误页面配置
        error_page 404 /404.html;
        location = /404.html {
            internal;
        }
​
        # 压缩配置
        gzip on;
        gzip_types text/plain application/json application/x-javascript text/css application/xml;
        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_buffers 16 8k;
        gzip_http_version 1.1;
        gzip_disable "MSIE [1-6].";
    }
}

在宿主机的 /docker/nginx/html 目录下放置页面(如果是生产环境,可将前端项目打包生成的 dist 目录下的所有文件放置在该目录下)

授权

bash 复制代码
# 授权于文件所有者(读、写、执行)权限
# 授权于文件所属组(读、执行)权限
# 授权于文件所属组(读、执行)权限
# -R 表示递归,即 /docker/nginx 目录及其子目录和文件都会应用此权限设置
chmod 755 -R /docker/nginx

删除临时容器

bash 复制代码
docker stop nginx && docker rm nginx

启动

bash 复制代码
# -d:后台运行容器(detached 模式)
# --name nginx:指定容器名称为 "nginx"
# -p 80:80:映射宿主机 80 端口 → 容器 80 端口(HTTP)
# -v /docker/nginx/html:/usr/share/nginx/html:挂载网页文件目录
# -v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:挂载主配置文件
# -v /docker/nginx/conf/conf.d:/etc/nginx/conf.d:挂载子配置目录
# -v /docker/nginx/log:/var/log/nginx:挂载日志目录
# --restart=always:容器意外退出时自动重启
# nginx:使用 nginx:latest 镜像
   
 docker run -d --name nginx \
 -p 80:80 \
 -v /docker/nginx/html:/usr/share/nginx/html \
 -v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
 -v /docker/nginx/conf/conf.d:/etc/nginx/conf.d \
 -v /docker/nginx/log:/var/log/nginx \
 --restart=always \
 nginx
​

测试

浏览器访问:localhost,其结果如下:

如果html目录下放置的是项目打包后生成的 dist 目录下的文件,则展示效果如下:

相关推荐
zxy984 小时前
Docker、Docker-compose、K8s、Docker swarm之间的区别
docker·kubernetes
心动啊1218 小时前
docker常用命令总结
docker·容器·eureka
python算法(魔法师版)8 小时前
Docker容器启动失败?无法启动?
linux·运维·nginx·docker·容器
不学无术の码农14 小时前
Ubuntu 22.04 (WSL2) 上使用 Docker 安装 Nacos 3.0.0
ubuntu·docker
AnnyYoung16 小时前
从Dockerfile 构建docker镜像——保姆级教程
docker·容器·eureka
何怀逸16 小时前
安装 Docker
运维·docker·容器
码码哈哈0.016 小时前
2025最新:3分钟使用Docker快速部署单节点Redis
redis·docker·eureka
Sahas101918 小时前
debian安装docker
docker·eureka·debian
may_一一19 小时前
Docker中mysql镜像保存与导入
mysql·docker·容器
liuze40819 小时前
使用 docker 安装 nacos3.x
运维·docker·容器