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