当前位置: 首页 > news >正文

Docker 安装和配置 Nginx 详细图文教程

🚀 作者主页: 有来技术
🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template
🌺 仓库主页: GitCode︱ Gitee ︱ Github
💖 欢迎点赞 👍 收藏 ⭐评论 📝 如有错误敬请纠正!

目录

  • 1. 环境准备
  • 2. 创建挂载目录
  • 3. 编写 Nginx 配置文件
  • 4. 拉取 Nginx 容器
  • 5. 启动 Nginx 容器
  • 6. 验证安装
  • 7. 配置 SSL(可选)
  • 8. 结语

Nginx 是一款高性能的 Web 服务器和反向代理服务器,广泛用于处理高并发的 Web 流量。在这篇文章中,通过 Docker 快速安装并配置 Nginx。

1. 环境准备

首先,确保你的系统已安装 Docker。如果尚未安装 Docker,请参考相关文档进行安装:

  • Linux (CentOS 9) 安装 Docker
  • Linux (CentOS 8) 安装 Docker
  • Windows 安装 Docker

2. 创建挂载目录

在安装和配置 Nginx 之前,首先需要创建一些目录,用于存放 Nginx 配置文件、网页文件、日志文件和 SSL 证书等。

sudo mkdir -p /mnt/nginx/{conf.d,html,logs,ssl}
目录路径核心用途
/mnt/nginx/conf存放自定义配置文件
(如虚拟主机配置)
/mnt/nginx/html网站静态资源
(HTML/CSS/JS/图片)
/mnt/nginx/logs存储访问日志/错误日志
(access.log, error.log)
/mnt/nginx/sslHTTPS证书文件
(.crt, .key, .pem)

3. 编写 Nginx 配置文件

/mnt/nginx/nginx.conf 目录下创建一个自定义的 Nginx 配置文件,执行以下命令:

sudo touch /mnt/nginx/nginx.conf

接下来,使用以下配置来部署 vue3-element-admin 项目的前端应用,并代理后端 API:

worker_processes 1;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;# 开启gzipgzip on;gzip_http_version 1.1;gzip_disable "MSIE [1-6]\.";gzip_min_length 1k;gzip_buffers 16 64k;gzip_comp_level 5;gzip_vary on;gzip_types text/plain application/javascript text/css;server {listen 80;server_name localhost;location / {# 指定前端静态资源路径# 需将 vue3-element-admin 项目构建后的 dist 目录拷贝至 /usr/share/nginx/html/vueroot /usr/share/nginx/html/vue;index index.html index.htm;}# 代理后端 API 请求location /prod-api/ {proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 后端服务地址,注意保留 URL 末尾的 `/`proxy_pass https://api.youlai.tech/;}}
}

4. 拉取 Nginx 容器

docker pull nginx

5. 启动 Nginx 容器

使用以下命令在 Docker 中启动 Nginx 容器,并挂载自定义配置文件和网页文件:

docker run -it -d --restart always --network host \--name nginx \-v /mnt/nginx/nginx.conf:/etc/nginx/nginx.conf \-v /mnt/nginx/html:/usr/share/nginx/html \-v /mnt/nginx/logs:/var/log/nginx/ \-v /mnt/nginx/ssl:/etc/nginx/ssl \nginx
参数功能说明
--network host网络模式
--name nginx容器命名
-v [宿主机路径]:[容器路径]数据卷挂载
/mnt/nginx/nginx.conf:/etc/nginx/nginx.conf挂载主配置文件
/mnt/nginx/html:/usr/share/nginx/html挂载网站文件
/mnt/nginx/logs:/var/log/nginx/持久化存储日志
/mnt/nginx/ssl:/etc/nginx/ssl挂载SSL证书

在这里插入图片描述

6. 验证安装

7. 配置 SSL(可选)

如果您需要启用 HTTPS,可以通过 阿里云数字证书管理 申请免费的 SSL 证书。申请完成后,下载适用于 Nginx 服务器的证书文件。
在这里插入图片描述

下载后,解压并将 SSL 证书放置到 /mnt/nginx/ssl 目录下。

接下来,在 Nginx 配置文件 nginx.conf 中添加以下配置来启用 HTTPS:

server {listen 443 ssl;server_name vue.youlai.tech;# 配置 SSL 证书路径ssl_certificate ssl/vue.youlai.tech.pem;ssl_certificate_key ssl/vue.youlai.tech.key;location / {root /usr/share/nginx/html/vue;index index.html index.htm;}# 设置反向代理接口location /prod-api/ {proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 后端服务地址,注意保留 URL 末尾的 `/`proxy_pass https://api.youlai.tech/;}
}

确保 SSL 证书的路径设置正确,并且 Nginx 配置无误。完成配置后,重新加载 Nginx 以使更改生效:

docker exec -it nginx nginx -s reload

8. 结语

通过 Docker 快速搭建并配置 Nginx 服务,可以极大地简化部署过程,并使得管理和维护更加高效。希望本文能帮助你在生产环境中顺利运行 Nginx,并通过合理配置优化其性能和安全性。

相关文章:

Docker 安装和配置 Nginx 详细图文教程

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 …...

基于Java+Swing+Mysql实现旅游管理信息系统

基于JavaSwingMysql实现旅游管理信息系统 一、系统介绍二、功能展示1.登陆2.注册3.旅游信息查询4.查看游行团信息5.报名6、报名信息管理 三、数据库四、其它1.其他系统实现五.获取源码 一、系统介绍 用户:登陆、注册、旅游信息查询、查看游行团信息、报名 管理员&a…...

使用 Openpyxl 操作 Excel 文件详解

文章目录 安装安装Python3安装 openpyxl 基础操作1. 引入2. 创建工作簿和工作表3. 写入数据4. 保存工作簿5. 加载已存在的Excel6. 读取单元格的值7. 选择工作表 样式和格式化1. 引入2. 设置字体3. 设置边框4. 填充5. 设置数字格式6. 数据验证7. 公式操作 性能优化1. read_only/…...

统信服务器操作系统V20 1070A 安装docker新版本26.1.4

应用场景: 硬件/整机信息:x86平台、深信服超融合平台 OS版本信息:统信V20 1070a 1.获取docker二进制包 链接: https://pan.baidu.com/s/1SukBlra0mQxvslTfFakzGw?pwd5s5y 提取码: 5s5y tar xvf docker-26.1.4.tgz groupadd docker ch…...

【数据分享】1929-2024年全球站点的逐年降雪深度数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2024年全球气象站…...

python爬虫系列课程1:初识爬虫

python爬虫系列课程1:初识爬虫 一、爬虫的概念二、通用爬虫和自定义爬虫的区别三、开发语言四、爬虫流程一、爬虫的概念 网络爬虫(又被称为网页蜘蛛、网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动抓取互联网信息的程序。原则上,只要是…...

大模型工具大比拼:SGLang、Ollama、VLLM、LLaMA.cpp 如何选择?

简介:在人工智能飞速发展的今天,大模型已经成为推动技术革新的核心力量。无论是智能客服、内容创作,还是科研辅助、代码生成,大模型的身影无处不在。然而,面对市场上琳琅满目的工具,如何挑选最适合自己的那…...

什么是语料清洗、预训练、指令微调、强化学习、内容安全; 什么是megatron,deepspeed,vllm推理加速框架

什么是语料清洗、预训练、指令微调、强化学习、内容安全 目录 什么是语料清洗、预训练、指令微调、强化学习、内容安全语料清洗预训练指令微调强化学习内容安全什么是megatron,deepspeed,vllm推理加速框架语料清洗 语料清洗是对原始文本数据进行处理的过程,旨在去除数据中的…...

HTTP的“对话”逻辑:请求与响应如何构建数据桥梁?

一、前言 作为现代互联网通信的基石,HTTP协议定义了客户端与服务器之间的“对话规则”。每一次网页加载、API调用或文件传输的背后,都离不开精心构造的HTTP请求与响应。请求中封装了用户的意图——从请求方法、资源路径到提交的数据;响应则承…...

【深度学习】预训练和微调概述

预训练和微调概述 1. 预训练和微调的介绍1.1 预训练(Pretraining)1.2 微调(Fine-Tuning) 2. 预训练和微调的区别 预训练和微调是现代深度学习模型训练中的两个关键步骤,它们通常是一个 预训练-微调 (Pretrain-Finetune…...

自动化测试框架搭建-单次接口执行-三部曲

目的 判断接口返回值和提前设置的预期是否一致,从而判断本次测试是否通过 代码步骤设计 第一步:前端调用后端已经写好的POST接口,并传递参数 第二步:后端接收到参数,组装并请求指定接口,保存返回 第三…...

【阮一峰】2.数组

数组 简介 所有成员的类型必须相同,但是成员数量是不确定的。 由于成员数量可以动态变化,所以 TypeScript 不会对数组边界进行检查,越界访问数组并不会报错。 第一种写法: let arr: (number | string)[];第二种写法&#xff…...

DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方DeepSeek接入)

前言 在当今数字化时代,AI编程助手已成为提升开发效率的利器。DeepSeek作为一款强大的AI模型,凭借其出色的性能和开源免费的优势,成为许多开发者的首选。今天,就让我们一起探索如何将DeepSeek接入PyCharm,实现高效、智…...

【Java Card】Applet 使用Shareable进行数据分享以及部分问题处理

文章目录 前言一、定义接口二、server端实现三、client端实现四、遇到的问题 前言 在进行开发时,可能会将业务放到不同的applet中,这时常常会需要进行数据的分享。 比如在一个applet中存储了密钥,而在另一个业务applet中需要进行签名时&…...

国产FPGA开发板选择

FPGA开发板是学习和开发FPGA的重要工具,选择合适的开发板对学习效果和开发效率至关重要。随着国产FPGA的发展,淘宝上的许多FPGA开发板店铺也开始进行国产FPGA的设计和销售,本文将对国产FPGA和相关店铺做个简单梳理,帮助有需要使用…...

com.typesafe.config

com.typesafe.config 是 Typesafe Config 库的核心包,主要用于 统一、灵活地管理应用程序配置,支持从多种格式(如 HOCON、JSON、Java Properties)加载配置,并提供类型安全的访问接口。以下是其核心功能的详细解析&…...

Ubuntu学习备忘

1. 打开Terminal快捷键 ctrl alt t 2.Ubuntu22.04的root没有默认初始密码, 为root设置密码,下面链接的step1, How to allow GUI root login on Ubuntu 22.04 Jammy Jellyfish Linux - LinuxConfig...

【C++】— 掌握STL vector 类:“Vector简介:动态数组的高效应用”

文章目录 1.vector的介绍和使用1.1vector的介绍1.2 vector的特点1.3vector的使用1.3.1vector的定义1.3.2vector iterator的使用1.3.3vector 的空间增长问题1.3.4 vector 的增删查改1.3.5vector 迭代器失效问题 1.vector的介绍和使用 1.1vector的介绍 vector是一个顺序容器&am…...

Docker__持续更新......

Docker 1. 基本知识1.1 为什么有Docker?1.2 Docker架构与容器化 画图解释 画图解释2. 项目实战 1. 基本知识 1.1 为什么有Docker? 用一行命令跨平台安装项目,在不同平台上运行项目。把项目打包分享运行应用。 1.2 Docker架构与容器化 准备机器,在机…...

【R语言】主成分分析与因子分析

一、主成分分析 主成分分析(Principal Component Analysis, PCA)是一种常用的无监督数据降维技术,广泛应用于统计学、数据科学和机器学习等领域。它通过正交化线性变换将(高维)原始数据投影到一个新的坐标系&#xff…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

centos 7 部署awstats 网站访问检测

一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发,采用DevEco Studio实现,包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...