使用 Docker 和 Nginx 高效部署 Web 服务(适用于慈云数据云服务器)

前言

在现代 Web 服务部署中,DockerNginx 的结合是一种高效、灵活且可扩展的解决方案。

  • Docker 使应用程序及其依赖项封装到一个独立的容器中,确保一致性,并简化部署过程。
  • Nginx 作为高性能 Web 服务器和反向代理,能够高效处理请求、提供负载均衡,并提升网站安全性。

本教程将详细介绍如何使用 DockerNginx 部署 Web 服务,并结合 慈云数据 的服务器推荐,帮助您高效地完成部署任务。


一、准备工作

在开始部署之前,确保您拥有一台稳定的服务器。慈云数据 提供高性能云服务器,适合各类 Web 应用和 DevOps 项目。

1.1 为什么选择慈云数据?

  • 高性价比:提供灵活的配置,满足不同规模的业务需求。
  • 高速稳定:BGP 多线接入,直连中国电信 CN2 网络,保证低延迟、高速访问。
  • 7x24h 服务器监控:专业运维团队提供全天候支持,确保业务稳定运行。

👉 服务器推荐:

  • 基础型:2 核 4G 内存,适用于个人博客、小型应用。
  • 标准型:4 核 8G 内存,适用于中等流量网站、企业应用。
  • 高性能型:8 核 16G 内存,适用于高并发、大流量 Web 服务。

立即获取服务器 👉 慈云数据官网


二、Docker 环境安装

2.1 安装 Docker

可以通过官方提供的安装脚本进行快速安装:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

如果遇到网络问题,可使用国内 Daocloud 一键安装:

curl -sSL https://get.daocloud.io/docker | sh

启动 Docker 服务

sudo systemctl start docker

验证 Docker 是否安装成功

docker --version

如果正确显示版本号,则安装成功。


2.2 推荐安装 1Panel 面板

1Panel 是一款现代化的服务器管理面板,支持一键安装 DockerDocker Compose,极大提升服务器管理的便捷性。
可在 慈云数据 服务器上安装:

curl -sSL https://get.1panel.cn | bash

安装完成后,即可在 Web 界面管理容器、创建 Web 服务,极大简化运维操作。


三、部署 Web 应用

3.1 拉取 Nginx 镜像

docker pull nginx

这将从 Docker 官方仓库拉取最新版的 Nginx 镜像。


3.2 创建挂载目录

在宿主机上创建以下目录,用于存放 日志配置Web 文件

mkdir -p /root/nginx_conf
mkdir -p /root/nginx_logs
mkdir -p /root/nginx_web

授权文件夹,防止 Nginx 无法访问:

chmod 777 /root/nginx_conf
chmod 777 /root/nginx_logs
chmod 777 /root/nginx_web

3.3 创建容器并挂载目录

⚠️ 注意:如果直接挂载空目录,会导致 Nginx 容器的配置文件目录为空,进而启动失败。我们先启动一次容器,然后复制默认配置文件。

第一步:启动 Nginx 容器
docker run -itd --name nginx -p 80:80 nginx
第二步:复制配置文件到宿主机
docker cp nginx:/etc/nginx /root/nginx_conf
第三步:删除容器,并重新创建
docker rm -f nginx
docker run -itd --name nginx -p 80:80 \-v /root/nginx_web:/var/www/html \-v /root/nginx_conf/nginx:/etc/nginx \-v /root/nginx_logs:/var/log/nginx \nginx

四、配置 Nginx

进入配置目录 /root/nginx_conf/conf.d/,修改 default.conf,或者新建 .conf 文件。

Nginx 会自动读取该目录下所有 .conf 配置文件

示例 Nginx 配置文件:

server {listen 80;server_name 你的服务器IP或域名;client_max_body_size 20m;access_log /var/log/nginx/host.access.log main;gzip on;gzip_static on;gzip_buffers 4 16k;gzip_http_version 1.1;gzip_comp_level 5;gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;gzip_disable "MSIE [1-6]\.";location / {root   /var/www/html;index index.html index.htm;try_files $uri $uri/ /index.html;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}
}

五、上传 Web 文件并访问

5.1 上传 Web 项目

将您的 Web 项目上传到 /root/nginx_web 目录,例如:

scp -r my_project root@your_server_ip:/root/nginx_web

5.2 重启 Nginx

docker restart nginx

5.3 访问 Web 服务

通过浏览器访问:

http://你的服务器IP:80

如果一切正常,您的 Web 页面应能正确加载。


六、域名绑定和 HTTPS 配置

6.1 绑定域名

如果您想通过 域名 访问 Web 服务,需要进行 DNS 解析。
操作步骤:

  1. 在域名服务商(如阿里云、腾讯云)购买域名
  2. 在 DNS 解析管理页面,添加 A 记录,将域名指向 慈云数据 服务器的 IP
  3. 修改 Nginx 配置文件,将 server_name 改为你的域名:
server_name www.yourdomain.com;
  1. 重启 Nginx
docker restart nginx

6.2 配置 HTTPS(SSL 证书)

HTTP 站点会被浏览器标记为 不安全,因此建议启用 HTTPS
步骤:

  1. 阿里云 申请 免费 SSL 证书,下载 .pem.key 文件
  2. 将证书上传至服务器 /root/nginx_conf/ssl/ 目录
  3. 在 Nginx 配置中启用 HTTPS:
server {listen 443 ssl;server_name www.yourdomain.com;ssl_certificate /root/nginx_conf/ssl/cert.pem;ssl_certificate_key /root/nginx_conf/ssl/key.pem;location / {root /var/www/html;index index.html index.htm;}
}
  1. 重启 Nginx
docker restart nginx

访问 https://yourdomain.com,即可使用 HTTPS 安全访问


总结

本教程介绍了如何在 Docker + Nginx 环境中部署 Web 服务,并结合 慈云数据 云服务器,确保高效稳定运行。
如果你需要高性能云服务器,推荐访问 慈云数据官网,选择适合的配置!🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28799.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年渗透测试面试题总结-字某跳动-渗透测试实习生(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 字某跳动-渗透测试实习生 渗透流程信息收集如何处理子域名爆破中的泛解析问题绕过CDN寻找真实IPPHPINFO页面关注…

【Spring AOP】_切点类的切点表达式

目录 1. 根据方法签名匹配编写切点表达式 1.1 具体语法 1.2 通配符表达规范 2. 根据注解匹配编写切点表达式 2.1 实现步骤 2.2 元注解及其常用取值含义 2.3 使用自定义注解 2.3.1 编写自定义注解MyAspect 2.3.2 编写切面类MyAspectDemo 2.3.3 编写测试类及测试方法 在…

直接法估计相机位姿

引入 在前面的文章:运动跟踪——Lucas-Kanade光流中,我们了解到特征点法存在一些缺陷,并且用光流法追踪像素点的运动来替代特征点法进行特征点匹配的过程来解决这些缺陷。而这篇文章要介绍的直接法则是通过计算特征点在下一时刻图像中的位置…

SpringCloud + Spring AI Alibaba 整合阿里云百炼大模型

一、前言 记录一次自己使用微服务整合阿里云的百炼大模型,需要用到Redis来记录最近五条信息,已能够保证上下文的连通性,Ai和用户之间的对话是使用的MongoDB来进行存储。然后我这篇文章是介绍了两种请求方式,一种是通过Http请求&a…

【MYSQL数据库异常处理】执行SQL语句报超时异常

MYSQL执行SQL语句异常:The last packet successfully received from the server was 100,107 milliseconds ago. The last packet sent successfully to the server was 100,101 milliseconds ago. 这个错误表明 MySQL 服务器与 JDBC 连接之间的通信超时了。通常由…

【Linux-网络】HTTP的清风与HTTPS的密语

🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚 引言 📚 一、HTTP 📖 1.概述 📖 2.URL &#x1f5…

Leetcode 二叉搜索树迭代器

通俗地解释这道题目的要求 这道题目要求你设计一个二叉搜索树(BST)的迭代器,让你能够像遍历一个数组那样,依次获取 BST 中的元素,并且始终按照 从小到大(中序遍历:左 -> 根 -> 右&#x…

Gartner:数据安全平台DSP提升数据流转及使用安全

2025 年 1 月 7 日,Gartner 发布“China Context:Market Guide for Data Security Platforms”(《数据安全平台市场指南——中国篇》,以下简称指南),报告主要聚焦中国数据安全平台(Data Securit…

进程控制 ─── linux第15课

目录 进程控制 1.进程创建 (fork前面讲过了) 写时拷贝 进程终止 进程退出场景 退出码 进程终止方法 进程控制 1.进程创建 (fork前面讲过了) 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父…

【网络安全 | 渗透测试】GraphQL精讲二:发现API漏洞

未经许可,不得转载。 推荐阅读:【网络安全 | 渗透测试】GraphQL精讲一:基础知识 文章目录 GraphQL API 漏洞寻找 GraphQL 端点通用查询常见的端点名称请求方法初步测试利用未清理的参数发现模式信息使用 introspection探测 introspection运行完整的 introspection 查询可视化…

2025-3-5 leetcode刷题情况(贪心算法--简单题目)

一、455.分发饼干 1.题目描述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 ,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺寸…

hive之LEAD 函数详解

1. 函数概述 LEAD 是 Hive 中的窗口函数,用于获取当前行之后指定偏移量处的行的值。常用于分析时间序列数据、计算相邻记录的差异或预测趋势。 2. 语法 LEAD(column, offset, default) OVER ([PARTITION BY partition_column] [ORDER BY order_column [ASC|DESC]…

Linux网络相关内容与端口

网络相关命令 ping命令测试连接状态 wget命令:非交互式文件下载器,可以在命令行内下载网络文件 使用ctrlc可以中止下载 curl命令:可以发送http网络请求,用于文件下载、获取信息等 其实和浏览器打开网站一样,cu…

OpenCV下载与配置(vistual studio 2022)

目录 1 简介 2 opencv的下载 ​编辑 3 配置环境变量 ​编辑 4 visual studio 2022中的配置 5 代码测试 6 总结 1 简介 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,广泛应用于图像处理、目标检测…

Pythonweb开发框架—Flask工程创建和@app.route使用详解

1.创建工程 如果pycharm是专业版,直接NewProject—>Flask 填写工程name和location后,点击右下角【create】,就会新建一个flask工程,工程里默认会建好一个templates文件夹、static文件夹、一个app.py文件 templates&#xff1…

服务器CPU微架构

1、微架构图 前端:预解码、解码、分支预测、L1指令缓存、指令TLB缓存 后端:顺序重排缓存器ROB处理依赖,调度器送到执行引擎 执行引擎:8路超标量,每一路可以进行独立的微操作处理 Port0、1、5、6支持整数、浮点数的加…

uniapp对接打印机和电子秤

uniapp对接打印机和电子秤 连接电子秤和打印机,最难的不是连接蓝牙和电子成,而是打印机。因为打印机涉及到向打印机写数据操作,然后这个写的数据需要做一个编码转换。难就难在编码转换。如果是java那就是一句代码的事情,而js就没有…

Linux基础IO

Linux基础IO 1.理解文件1.1 狭义理解1.2 广义理解1.3 文件操作的归类认知1.4 系统角度 2.c的文件接口2.1 hello.c打开文件2.2 hello.c写文件2.3 hello.c读文件2.4 stdin & stdout & stderr 3.系统打开文件接口3.1 一种传递标记位的方法3.2 open函数3.3 文件描述符3.3.0…

Linux下学【MySQL】中如何实现:多表查询(配sql+实操图+案例巩固 通俗易懂版~)

每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论: 本章是MySQL篇中,非常实用性的篇章,相信在实际工作中对于表的查询,很多时候会涉及多表的查询,在多表查询的…

C#调用Ni板卡进行实现采集任务(模拟量输入输出)示例1

本文介绍如何使用C#控制Ni的USB-6008板卡进行模拟量输入、模拟量输出、输出量输入、数字量输出。代码详见下面的链接: C#调用Ni板卡进行实现采集任务(模拟量输入输出)示例1资源-CSDN文库 https://download.csdn.net/download/qq_34047402/90457042 步骤1、确认NI MAX可以正…