1. 拉取 Nginx 镜像


从 Docker Hub 拉取 Nginx 官方镜像,可根据需求选择特定版本,若不指定则默认拉取最新版本。


收起

bash

# 拉取最新版本
docker pull nginx
# 拉取指定版本,如 1.25.3
docker pull nginx:1.25.3

2. 运行 Nginx 容器

基础运行


收起

bash

docker run -d --name my-nginx -p 80:80 nginx


参数说明:


  • -d:让容器在后台运行。

  • --name my-nginx:为容器命名,方便后续管理。

  • -p 80:80:将宿主机的 80 端口映射到容器内的 80 端口,以便通过宿主机 IP 访问 Nginx 服务。

  • nginx:指定使用的镜像。

挂载配置和网页目录


为了方便修改配置和更新网页内容,可进行目录挂载。


收起

bash

docker run -d --name my-nginx \
  -p 80:80 \
  -v /your/host/nginx.conf:/etc/nginx/nginx.conf \
  -v /your/host/html:/usr/share/nginx/html \
  nginx


这里将宿主机的配置文件和网页目录分别挂载到容器内相应位置。

3. 验证 Nginx 服务


在浏览器中输入宿主机的 IP 地址(本地测试用 localhost),若看到 Nginx 欢迎页面,则说明服务启动成功。

4. 查看 Nginx 日志

查看容器内 Nginx 日志文件


可以进入容器内部查看日志文件,如访问日志和错误日志。


收起

bash

# 进入容器
docker exec -it my-nginx bash
# 查看访问日志
cat /var/log/nginx/access.log
# 查看错误日志
cat /var/log/nginx/error.log

直接在宿主机查看容器日志输出


使用 docker logs 命令查看 Nginx 容器的标准输出和标准错误输出,包含了日志信息。


收起

bash

# 查看实时日志
docker logs -f my-nginx
# 查看最新的 100 行日志
docker logs --tail 100 my-nginx

5. 配置 Nginx 反向代理


反向代理可将客户端请求转发到后端服务器。

配置示例


假设后端服务器地址为 http://backend-server:8080,修改挂载的 nginx.conf 文件:


收起

nginx

http {
    server {
        listen 80;
        server_name yourdomain.com;

        location / {
            proxy_pass http://backend-server:8080;
            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_pass:指定要转发的后端服务器地址。

  • proxy_set_header:设置转发请求时的请求头,确保后端服务器能获取正确的客户端信息。

重启容器使配置生效


收起

bash

docker restart my-nginx

6. 实现 Nginx 负载均衡


负载均衡可将客户端请求均匀分配到多个后端服务器,提高服务的可用性和性能。

配置多个后端服务器的负载均衡


修改 nginx.conf 文件:


收起

nginx

http {
    upstream backend_servers {
        server backend-server1:8080;
        server backend-server2:8080;
        # 可根据需要添加更多后端服务器
    }

    server {
        listen 80;
        server_name yourdomain.com;

        location / {
            proxy_pass http://backend_servers;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}


  • upstream 块:定义了一组后端服务器,Nginx 会根据负载均衡算法将请求分配到这些服务器上。默认使用轮询算法。

其他负载均衡算法


  • 加权轮询:为每个后端服务器设置不同的权重,权重越高分配到的请求越多。


收起

nginx

upstream backend_servers {
    server backend-server1:8080 weight=2;
    server backend-server2:8080 weight=1;
}


  • IP 哈希:根据客户端的 IP 地址进行哈希计算,将同一客户端的请求始终分配到同一台后端服务器。


收起

nginx

upstream backend_servers {
    ip_hash;
    server backend-server1:8080;
    server backend-server2:8080;
}

重启容器使负载均衡配置生效


收起

bash

docker restart my-nginx

7. 其他常见操作

停止容器


收起

bash

docker stop my-nginx

启动已停止的容器


收起

bash

docker start my-nginx

删除容器


先停止容器再删除:


收起

bash

docker stop my-nginx
docker rm my-nginx