Docker中安装nginx环境
·
概要
今天我将详细介绍如何在 Docker 环境中部署 Nginx。内容将涵盖从基础的 Docker 拉取镜像、容器启动到配置 Nginx 服务的过程,特别是针对在拉取镜像时可能遇到的网络问题时的解决办法,帮助大家顺利搭建并配置一个高效稳定的 Nginx 服务。
直接部署Nginx
一、拉取镜像
- 进入 docker官网,所有在上方搜索栏搜索nginx,点击框选的这个。(进不去官网的可以开加速器)

- 这里是我们可以选择的标签。

例如我们选择拉取1.28.0版本,那么我们的代码就应该是docker pull nginx:1.28.0
二、搭建Nginx服务
- 创建文件夹用于挂载
mkdir nginx
cd /nginx
mkdir html
mkdir logs
- 创建测试nginx1.28.0的容器
docker run -d --name nginx -p 80:80 nginx:1.28.0
- 将nginx配置文件复制到了主机,复制到/root目录下
docker container cp nginx:/etc/nginx .
- 停止并删除了测试nginx1.28.0容器
docker stop nginx&&docker rm nginx
- 进入/root/nginx。
cd /root/nginx
- 修改配置文件nginx.conf
server {
listen 91;
listen [::]:91;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /apapi {
# 将 /api 路径的请求转发到 Java 应用所在的地址
proxy_pass http://java-app:62808/;
# 设置 HTTP 协议版本为 1.1,确保 WebSocket 等持久连接正常工作
proxy_http_version 1.1;
# 设置请求头中的 Host 字段为当前请求的 Host
proxy_set_header Host $host;
# 在请求升级(例如 WebSocket 协议)时跳过缓存
proxy_cache_bypass $http_upgrade;
# 设置 CORS 相关的 HTTP 头信息,允许跨域请求
add_header 'Access-Control-Allow-Origin' '*'; # 允许所有来源跨域
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS'; # 允许的 HTTP 方法
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization'; # 允许的请求头
# 针对 OPTIONS 请求(CORS 预检请求),返回 204 状态码
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
add_header 'Access-Control-Max-Age' 1728000; # 预检请求的缓存时间(秒)
return 204; # 返回空响应,表示不需要进一步处理
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
- 创建自定义的网络(如果不创建自定义网络,直接启动容器,后台项目将访问不到nginx)
docker network create mynetwork
- 使用自定义网络启动Nginx容器
sudo docker run -d --network mynetwork --name my-nginx \
-p 91:91 \
-v /nginx/html:/usr/share/nginx/html \
-v /nginx/conf:/etc/nginx \
-v /nginx/logs:/var/log/nginx \
nginx:1.28.0
- 测试
# 浏览器访问宿主机映射的 91 端口:
http://localhost:91
拉取Nginx出现网络错误时的解决办法
一、从别的Linux服务器导出镜像
遇到网络错误的时候,可以找一个已经部署Nginx的服务器,导出Nginx的镜像,然后导入到需要搭建的服务器上。
- docker 镜像导出,导出后将导出的镜像转移到需要搭建Nginx的服务器上。(推荐使用Xshell)
# 指定路径 /images/nginx.tar和名称
sudo docker save -o /images/nginx.tar nginx:1.28.0
- docker 镜像导入
# 将导出的镜像文件放到指定路径 /images/nginx.tar下,然后导出
docker load -i /images/nginx.tar
这样我们就跳过了直接从docker官网拉取Nginx的步骤了
二、从Nginx官网手动下载镜像文件
- 访问Nginx手动下载地址手动下载Nginx的docker镜像
我们一般下载比较稳定的版本,如图
- 下载完成之后将下载后的文件放入到linux中,使用tar -xzvf 解压下载后的文件
tar -xzvf nginx-1.28.0.tar.gz
- 解压完成后,进入解压出来的目录:
cd nginx-1.28.0
- 安装依赖包
确保你的系统上安装了构建工具和依赖项。例如,在基于 Debian/Ubuntu 的系统上,可以使用以下命令安装依赖:
sudo apt update
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
- 在源代码目录下运行 ./configure 命令来配置编译选项:
# 例如,使用以下命令安装到 /usr/local/nginx:
./configure --prefix=/usr/local/nginx --with-http_ssl_module
- 配置完成后,使用 make 命令编译安装Nginx:
sudo make install
小结
以上就是我部署Nginx的时候的一些心得,希望能够帮助到大家。
更多推荐


所有评论(0)