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

docker 安装 nginx无坑版

一. 拉取镜像

docker pull nginx

在这里插入图片描述

二. 创建挂载目录

mkdir -p /usr/local/nginx/conf
mkdir -p /usr/local/nginx/log
mkdir -p /usr/local/nginx/html

三. 从nginx容器里复制nginx的配置文件到主机里

  1. 创建个容器
docker run --name nginx -p 80:80 -d nginx
  1. 将容器内的配置文件复制给主机
docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /usr/local/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /usr/local/nginx/
  1. 删除创建的镜像(它存在的目的只是为了复制里面文件)
docker stop nginx
docker rm  nginx

四. 开始创建容器

  1. 创建容器
docker run \
-p 80:80 \
--name nginx \
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /usr/local/nginx/log:/var/log/nginx \
-v /usr/local/nginx/html:/usr/share/nginx/html \
-d nginx

在这里插入图片描述

  1. 查看创建的容器
docker ps

在这里插入图片描述
可以看到已经创建成功.

五. 访问

在这里插入图片描述

六. 上传图片访问下

在这里插入图片描述

在这里插入图片描述

七. nginx 配置文件说明

# nginx配置文件存放的地方
cd /usr/local/nginx/conf/
# 查看nginx.conf
vi nginx.conf

在这里插入图片描述
可以看见,只要是/ect/nginx/conf.d文件夹下的所有后缀为.conf的都会加载进去,因为我们创建容器时将/ect/nginx/conf.d挂载在本机的/usr/local/nginx/conf/conf.d,因此只需要在本地的这个目录就可以了.

cd /usr/local/nginx/conf/conf.d

我们尝试创建一个后缀为.conf的文件

vi test.conf

然后在里面添加以下内容

server {listen       80;server_name  123.57.167.145; ## 重要!!!修改成你的外网 IP/域名location /static { root   /usr/share/nginx/html; ## 重要,指的是容器内部的路径index  pp.txt;}}

location /static {
root /usr/share/nginx/html; ## 重要,指的是容器内部的路径
index pp.txt;
}
这块注意,表示访问的目录为 root + location 即: /usr/share/nginx/html/static

  • location : 为路径/: 表示nginx的根目录,static表示nginx根目录下有一个static文件夹或文件.
  • root 指令来指定请求 URL 匹配成功后,Nginx 应该使用哪个目录作为根目录,默认根目录是 /usr/share/nginx/html(因为他有个默认配置文件),以方便返回请求的文件。可以修改根目录,如将根目录修改为/opt/,那么它将以opt为根目录开始查找.
  • index表示默认查找的文件,访问该文件夹,默认访问的文件.

现在我们重启这个nginx,以便配置文件生效

docker restart nginx

如果没有启动成功可以用以下命令查看日志

docker logs nginx

在这里插入图片描述
我们打开这个文件看看
在这里插入图片描述
少了个s,加上重新启动.

docker restart nginx

在html创建一个static文件夹并创建一个文本文件

cd /usr/local/nginx/html
# 创建文件夹
mkdir static
# 创建文件
vi pp.txt

随便添加些内容
在这里插入图片描述
访问 :ip /static
在这里插入图片描述
可以发现,已经有了

八. 遇到的问题以及解决办法

1. 配置文件修改了,却还是报404

  (1). 检查配置文件的配置路径是否写错

在这里插入图片描述

 (2).  查看日志
 cd   /usr/local/nginx/log

在这里插入图片描述

# 查看后50 行内容tail -n 50  error.log

在这里插入图片描述
可以发现
如果找不到文件,它会将找的文件路径标出,用来确定为什么是404

(3). 查看是否写的是容器内的路径.

相关文章:

docker 安装 nginx无坑版

一. 拉取镜像 docker pull nginx二. 创建挂载目录 mkdir -p /usr/local/nginx/conf mkdir -p /usr/local/nginx/log mkdir -p /usr/local/nginx/html三. 从nginx容器里复制nginx的配置文件到主机里 创建个容器 docker run --name nginx -p 80:80 -d nginx将容器内的配置文件…...

自己动手做chatGPT:向量的概念和相关操作

chatGPT的横空出世给人工智能注入一针强心剂,它是历史上以最短时间达到一亿用户的应用。chatGPT的能力相当惊人,它可以用相当流利的语言和人对话,同时能够对用户提出的问题给出相当顺畅的答案。它的出现已经给各个行业带来不小冲击&#xff0…...

【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(7)

目录 写在前面: 题目:P1596 [USACO10OCT]Lake Counting S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述: 输入格式: 输出格式: 输入样例: 输出样例: 解题思路: …...

Python嵌套函数(Nested function)和闭包(closure)

Python嵌套函数(Nested function)和闭包(closure) 闭包(closure)是建立在嵌套函数基础上的,是一种特殊的嵌套函数结构。 先看嵌套函数(Nested function)。 Python允许…...

【实战】React 必会第三方插件 —— Cron 表达式生成器(qnn-react-cron)

文章目录一、引子二、配置使用1.安装2.使用(1)直接调用(2)赋值到表单(Form)(3)自定义功能按钮(4)隐藏指定 Tab(5)其他三、常见问题及解…...

C# 教你如何终止Task线程

我们在多线程中通常使用一个bool IsExit类似的代码来控制是否线程的运行与终止,其实使用CancellationTokenSource来进行控制更为好用,下面我们将介绍CancellationTokenSource相关用法。C# 使用 CancellationTokenSource 终止线程使用CancellationTokenSo…...

整合SpringCache

整合SpringCache 1、引入依赖cache还有redis <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId> </dependency>2、写配置 spring:cache:type: redis3、测试使用缓存 Cache…...

05 - 环境变量编程

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;Linux系统编程训练营 - 目录 文章目录1. 初识环境变量1.1 问题1.2 main函数&#xff08;默认进程入口&#xff09;1.3 什么是环境变量&#xff1f;1.4 环境表的构成1.5 思考2. 深…...

vue3后台管理系统

后面可参考下&#xff1a;vue系列&#xff08;三&#xff09;——手把手教你搭建一个vue3管理后台基础模板 以下代码项目gitee地址 文章目录1. 初始化前端项目初始化项目添加加载效果配置 vite.config.js2. 使用路由安装路由配置路由配置别名和跳转安装pathvite.config.jsjsco…...

掷骰子式的乐趣:探究C语言生成随机数的奥秘

掷骰子式的乐趣&#xff1a;探究C语言生成随机数的奥秘一、引言二、C标准库的rand函数三、srand函数的使用四、基于时间的种子生成五、高质量随机数的应用一、引言 C语言中生成随机数是一项非常重要的功能&#xff0c;因为许多现代应用程序需要使用随机数。随机数可以用于密码…...

一线大厂软件测试常见面试题1500问,背完直接拿捏面试官,

三、测试理论 3.1 你们原来项目的测试流程是怎么样的? 我们的测试流程主要有三个阶段&#xff1a;需求了解分析、测试准备、测试执行。 1、需求了解分析阶段 我们的SE会把需求文档给我们自己先去了解一到两天这样&#xff0c;之后我们会有一个需求澄清会议&#xff0c; 我…...

小迪安全day12WEB漏洞-SQL注入之简要SQL注入

小迪安全day12WEB漏洞-SQL注入之简要SQL注入 注入产生原理详细分析 可控变量带入数据库查询变量未存在过滤或过滤不严谨 连接符区分 and是sql语句连接符&#xff0c;&是uel参数连接符 and 11是注入语句&#xff0c; &是添加一个新变量 数据库内容 数据库A 网站…...

自动化测试学习(七)-正则表达式,你真的会用吗?

目录 一、正则表达式在python中如何使用 二、用正则表达式匹配更多模式 三、常用字符分类的缩写代码 总结 所谓正则表达式&#xff08;regex&#xff09;&#xff0c;就是一种模式匹配&#xff0c;学会用正则匹配&#xff0c;就可以达到事半功倍的效果。 一、正则表达式在…...

验证码——vue中后端返回的图片流如何显示

目录 前言 一、p调用接口获取验证码 canvas画布渲染&#xff1f; 二、后端返回图片&#xff08;图片流&#xff09;&#xff0c;前端显示 1.blob 2.arraybuffer 总结 前言 登录界面经常会有验证码&#xff0c;验证码的实现方式也有很多&#xff0c;我目前做过以下两种&…...

聚观早报 | 拼多多驳斥Google的指控;80%美国人工作将被AI影响

今日要闻&#xff1a;拼多多驳斥Google“恶意软件”的指控&#xff1b;80%美国人工作将被AI影响&#xff1b;iPhone 15 Pro设计图上热搜&#xff1b;贾扬清离职阿里投身AI大模型创业&#xff1b;OPPO Find X6 系列发布拼多多驳斥Google“恶意软件”的指控 3 月 21 日&#xff0…...

define,typedef,inline 的区别

define 1.用于在代码中创建宏定义&#xff0c;将一个标识符替换为一个表达式或语句。例如&#xff1a; #define PI 3.14159 #define SQUARE(x) ((x) * (x))这样&#xff0c;程序中所有出现的 PI 都将被替换为 3.14159&#xff0c;SQUARE(x) 则被替换成了 (x) * (x)。 使用 #…...

百度文心一言正式亮相

OpenAI 刚发布了 GPT-4&#xff0c;百度预热已久的人工智能生成式对话产品也终于亮相了。昨天下午&#xff0c;文心一言 (ERNIE Bot)—— 百度全新一代知识增强大语言模型、文心大模型家族的新成员&#xff0c;正式在百度总部 “挥手点江山” 会议室里发布。 发布会一开场&…...

使用Android架构模板

使用Android架构模板 项目介绍 为了方便开发者引入最新的Android架构组建进行开发&#xff0c;Google官方给我们引入了一个架构模板&#xff0c;方便我们快速进入开发。 github地址&#xff1a; https://github.com/android/architecture-templates 该模板遵循官方架构指南 …...

2023年天津市逆向re2.exe解析-比较难(超详细)

2023年天津市逆向re2.exe解析(较难) 1.拖进IDA里进行分析2.动态调试3.编写EXP脚本获取FLAG4.获得FLAG1.拖进IDA里进行分析 进入主程序查看伪代码 发现一个循环,根据行为初步判定为遍历输入的字符并对其ascii^7进行加密 初步判断sub_1400ab4ec为比较输入和flag的函数 跟进u…...

springboot: mybatis动态拼接sql查询条件

目录 需求01: 根据不同类型 查询不同的订单名, 1. 书写订单 类型转换方法 2. 使用方式: 3.. 构建条件构造器并进行查询, 传递查询参数 4. Mapper 写法 5. 最核心位置 xml位置 6. sql执行效果: 需求01: 根据不同类型 查询不同的订单名, 条件也是不同的, 需要复用sql…...

搞懂 SAPUI5 Application Index:为什么你的 Fiori 应用改完了,系统却像没看见一样

在 SAP Fiori 项目里,开发团队最容易忽略的一件事,不是 OData 服务,也不是 Component.js,而是 SAPUI5 Application Index。很多人会遇到这样一种场景:应用代码已经传输完成,BSP 资源也在系统里了,manifest.json 也改过了,可是 Fiori Launchpad 仍然表现得像什么都没发生…...

GPT-SoVITS应用场景解析:为视频配音、做有声书,简单又实用

GPT-SoVITS应用场景解析&#xff1a;为视频配音、做有声书&#xff0c;简单又实用 1. 引言&#xff1a;声音克隆技术带来的变革 想象一下&#xff0c;你正在制作一个短视频&#xff0c;需要为不同角色配音。传统方式要么自己录制&#xff08;效果可能不专业&#xff09;&…...

告别串口调试助手:用Chrome浏览器直接调试Arduino/ESP32(Web Serial API实战)

浏览器直连硬件&#xff1a;Web Serial API在物联网开发中的高阶应用 每次调试Arduino或ESP32设备时&#xff0c;那些繁琐的串口助手切换、驱动安装和兼容性问题是否让您感到疲惫&#xff1f;现在&#xff0c;只需一个Chrome浏览器窗口&#xff0c;就能完成从设备连接到数据可…...

VibeVoice与Vue3前端整合:浏览器端语音合成方案

VibeVoice与Vue3前端整合&#xff1a;浏览器端语音合成方案 1. 为什么要在浏览器里直接合成语音 你有没有遇到过这样的场景&#xff1a;在做一个在线教育应用时&#xff0c;想让系统自动朗读课文&#xff0c;但每次都要把文字发到后端服务器&#xff0c;等几秒钟再把音频文件…...

OpenClaw+GLM-4.7-Flash智能书签:自动归档网页内容

OpenClawGLM-4.7-Flash智能书签&#xff1a;自动归档网页内容 1. 为什么需要智能书签管理 作为一个每天需要浏览大量技术文档和行业资讯的开发者&#xff0c;我发现自己陷入了"收藏即遗忘"的困境。Chrome书签栏里堆满了未分类的链接&#xff0c;Evernote里塞着杂乱…...

Meta Manus vs OpenClaw:2026年AI Agent之战,谁才是你的最佳选择?

## 引言2026年AI Agent市场迎来爆发式增长&#xff0c;预计到2034年将达到1400亿美元规模。在这个赛道上&#xff0c;Meta的Manus和开源项目OpenClaw成为最受关注的两大竞争者。本文将深入分析两者的差异&#xff0c;帮助你做出最佳选择。## Meta Manus&#xff1a;巨头的入场#…...

UART协议深度优化:如何用FIFO缓存解决高速串口丢包问题

UART协议深度优化&#xff1a;如何用FIFO缓存解决高速串口丢包问题 在嵌入式系统和工业控制领域&#xff0c;UART通信因其简单可靠的特性被广泛应用。但当波特率超过1Mbps时&#xff0c;传统设计常面临数据丢失的困扰。上周调试一个机器人关节控制器时&#xff0c;115200波特率…...

QtScrcpy完全指南:从多设备控制到游戏键位映射的全方位应用

QtScrcpy完全指南&#xff1a;从多设备控制到游戏键位映射的全方位应用 【免费下载链接】QtScrcpy Android实时投屏软件&#xff0c;此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtSc…...

颠覆式消息留存方案:RevokeMsgPatcher全方位防撤回技术解析

颠覆式消息留存方案&#xff1a;RevokeMsgPatcher全方位防撤回技术解析 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://gitco…...

DLSS Swapper:轻松管理游戏超采样版本,释放显卡全部性能

DLSS Swapper&#xff1a;轻松管理游戏超采样版本&#xff0c;释放显卡全部性能 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 在追求极致游戏体验的今天&#xff0c;DLSS&#xff08;深度学习超采样&#xff09;技术…...