Docker - 设置 NGINX
Docker - 设置 NGINX
Section titled “Docker - 设置 NGINX”NGINX 是一个流行的高性能 Web 服务器、反向代理、负载均衡器和缓存。使用 Docker 可以非常轻松地运行 Nginx 实例,用于提供静态内容、代理请求到后端应用程序或测试配置。
运行基础 Nginx 容器
Section titled “运行基础 Nginx 容器”第一步:拉取官方 Nginx 镜像。通常优选基于 Alpine 的镜像,因为它体积较小。
# 拉取基于 Alpine Linux 的稳定版 Nginx 镜像docker pull nginx:stable-alpine第二步:运行 Nginx 容器,将容器内的端口 80(默认 HTTP 端口)映射到主机上的某个端口(例如端口 8080)。
# 在后台运行 Nginx (-d),命名为 'my-nginx-server'# 将主机端口 8080 映射到容器端口 80 (-p)docker run -d --name my-nginx-server -p 8080:80 nginx:stable-alpine第三步:测试服务器。打开您的 Web 浏览器,访问 http://localhost:8080(或 http://<your-docker-host-ip>:8080)。
您应该看到默认的 Nginx 欢迎页面:“Welcome to nginx!” 这确认容器正在运行并提供内容。
提供自定义静态内容
Section titled “提供自定义静态内容”您可以通过将包含您内容的本地目录挂载到容器内默认的 Nginx Web 根目录 (/usr/share/nginx/html),来轻松提供您自己的 HTML、CSS 和 JavaScript 文件。
第四步:创建一个本地目录(例如 my-static-content),并在其中放置一个 index.html 文件。
# 示例 ./my-static-content/index.html<!DOCTYPE html><html><head><title>My Static Site</title></head><body><h1>Hello from my custom content!</h1></body></html>第五步:运行 Nginx 容器,挂载您的本地目录。
# 如果上一个容器仍在运行,则停止并移除它# docker stop my-nginx-server && docker rm my-nginx-server
# 运行 Nginx,将本地 './my-static-content' 挂载到容器的 Web 根目录# 将主机端口 8081 映射到容器端口 80docker run -d --name my-custom-nginx -p 8081:80 \ -v "${PWD}/my-static-content":/usr/share/nginx/html:ro \ nginx:stable-alpine说明:
-v "${PWD}/my-static-content":/usr/share/nginx/html:ro: 将当前主机工作目录 (${PWD}) 中的my-static-content目录挂载到容器内的/usr/share/nginx/html目录。:ro: 以只读模式挂载卷,这对于提供静态内容是良好的实践——容器无法修改你的主机文件。
第六步:再次测试。在浏览器中访问 http://localhost:8081。您现在应该看到来自您的自定义 index.html 文件的内容了。
使用自定义 Nginx 配置
Section titled “使用自定义 Nginx 配置”对于更复杂的设置(如反向代理或自定义服务器块),您可以挂载自定义 Nginx 配置文件。
第七步:创建一个本地配置文件(例如 my-nginx.conf)。
# 示例 my-nginx.conf(非常基础)server { listen 80; server_name localhost;
location / { root /usr/share/nginx/html; index index.html index.htm; }
location /api/ { # 示例反向代理配置 # proxy_pass http://backend-service:3000; }}第八步:运行 Nginx 容器,将您的自定义配置文件覆盖默认文件 (/etc/nginx/conf.d/default.conf)。
docker run -d --name my-configured-nginx -p 8082:80 \ -v "${PWD}/my-static-content":/usr/share/nginx/html:ro \ -v "${PWD}/my-nginx.conf":/etc/nginx/conf.d/default.conf:ro \ nginx:stable-alpine现在容器内的 Nginx 将使用您的 my-nginx.conf 设置。这允许您定义自定义服务器块、代理规则、SSL 配置等,而无需为每次配置更改都构建一个新的自定义 Nginx 镜像(尽管构建一个包含配置的镜像也是一种有效的方法)。