安装OpenResty(Linux-Docker)

news2024/11/11 4:45:03

文章目录

  • 创建挂载目录的配置文件和日志
  • 通过lua脚本实现通过请求头动态路由

直接在linux中安装请参考博客 https://blog.csdn.net/shall_zhao/article/details/142070389
这篇博客讲解如何在docker中安装

创建挂载目录的配置文件和日志

这个主要是为了我们后面对配置文件进行一定的修改方便,最好配置一下:

mkdir -p /home/docker/openresty/nginx
mkdir -p /home/docker/openresty/nginx/lua
mkdir -p /home/docker/openresty/nginx/logs

拉镜像

docker pull openresty/openresty

先运行一下OpenResty容器,把他的配置文件先拷贝出来,用于宿主机挂载

# 运行openresty容器
docker run -it --name openresty -p 7000:80 openresty/openresty

这时候我们使用的是-it参数,所以这个指令运行以后不会关闭,你也可以修改-it-d,让他在后台运行,如果使用的是-it参数的话,需要再开一个远程窗口进行文件拷贝的操作。
在这里插入图片描述

# 拷贝conf文件夹和html文件夹内容到宿主机
docker cp openresty:/usr/local/openresty/nginx/conf /home/docker/openresty/nginx/conf
docker cp openresty:/usr/local/openresty/nginx/html /home/docker/openresty/nginx/html
docker cp openresty:/etc/nginx/conf.d /home/docker/openresty/nginx/conf.d

拷贝完成后就可以停下这个容器,并且删除

docker stop openresty
docker rm openresty

然后我们正式启动这个容器,指定挂载路径

docker run -itd \
--privileged=true \
--restart=always \
--name openresty \
-p 7000:80 \
-p 8000:8000 \
-v /home/docker/openresty/nginx/conf:/usr/local/openresty/nginx/conf/:rw \
-v /home/docker/openresty/nginx/conf.d:/etc/nginx/conf.d/:rw \
-v /home/docker/openresty/nginx/html:/usr/local/openresty/nginx/html/:rw \
-v /home/docker/openresty/nginx/logs:/usr/local/openresty/nginx/logs/:rw \
-v /home/docker/openresty/nginx/lua:/usr/local/openresty/nginx/lua/:rw \
openresty/openresty

在这里插入图片描述
访问一下欢迎页面: http://192.168.10.88:7000/
我这是自己的路由,根据你的虚拟机地址修改自己的域名

在这里插入图片描述
打开html目录下的index.html添加一个内容

vi /home/docker/openresty/nginx/html/index.html

在这里插入图片描述
重启openresty查看效果

docker exec openresty /usr/local/openresty/nginx/sbin/nginx -s reload

在这里插入图片描述

通过lua脚本实现通过请求头动态路由

新增一个index2.html页面用于演示效果

# 进入宿主机页面文件挂载地址
cd /home/docker/openresty/nginx/html
# 复制一份index.html文件为index2.html
cp index.html index2.html

修改index2.html的内容

vi index2.html

编写Lua脚本
在/home/docker/openresty/nginx/lua目录创建一个router.lua文件,将下面内容写入到文件中

-- router.lua
local upstreams = {
    V1 = "https://192.168.10.88:7000/index.html",
    V2 = "https://192.168.10.88:7000/index2.html",
}

local target_server = "V1" 

local specific_header = ngx.req.get_headers()["Api-Version"]

if specific_header then
    target_server = specific_header
end

ngx.var.target_server = upstreams[target_server]

配置nginx.conf

vi /home/docker/openresty/nginx/conf/nginx.conf

在http块的default_type application/octet-stream;下添加lua_package_path,lua_package_path是我们存放lua脚本的地址?.lua代表.lua结尾的文件,;; 是为了确保 OpenResty 可以加载系统默认的 Lua 模块,而不仅仅是加载指定的用户自定义目录。当你需要指定自定义的搜索路径时,只需在 ;; 前添加你自己的路径即可

lua_package_path "/usr/local/openresty/nginx/lua/?.lua;;";

配置my.conf
在/home/docker/openresty/nginx/conf.d目录创建一个my.conf文件,将下面内容写入到文件中,在nginx.conf默认配置了include /etc/nginx/conf.d/*.conf;,我们将宿主机的/home/docker/openresty/nginx/conf.d 目录和容器内目录进行了挂载,只要在宿主机/home/docker/openresty/nginx/conf.d 目录添加自己的配置就能加载到。

vi /home/docker/openresty/nginx/conf.d/my.conf
    server {
        listen 8000;

        set $target_server '';

        location / {
            access_by_lua_file /usr/local/openresty/nginx/lua/router.lua;
            proxy_pass $target_server;
        }
    }

重新加载配置

docker exec openresty /usr/local/openresty/nginx/sbin/nginx -s reload

测试动态路由功能
调用V1版本

curl -H "Api-Version: V1" http://127.0.0.1:8000

调用V2版本

curl -H "Api-Version: V2" http://127.0.0.1:8000

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VS中SVN的简介、安装和使用(安装+汉化+使用)

一.安装SVN 1.下载:Downloads TortoiseSVN 安装包: 汉化包(就在安装包下面): 2.安装:无脑下一步 SVN客户端不是指一个桌面应用程序,而是集成到系统的右键菜单中的插件 二.安装vs插件&#x…

基于SpringBoot的在线购物平台

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的在线购物平台&am…

亚信安慧AntDB数据库与华为DPA数据保护一体机完成兼容性互认证,共筑数据安全与效率新高地

近日,湖南亚信安慧科技有限公司(简称“亚信安慧”)与华为技术有限公司(简称“华为”)完成了亚信安慧AntDB数据库与华为DPA数据保护一体机兼容性互认证。 图1:华为DPA数据保护一体机兼容性互认证 亚信安慧A…

专业通风天窗厂家能提供哪些服务

专业通风天窗厂家提供的服务通常涵盖了从设计、生产、销售到安装、售后等多个环节,具体服务内容可能因厂家而异,但一般包括以下方面。1、设计服务个性化设计:根据客户的需求和建筑物的特点,提供科学合理的设计方案。包括天窗的尺寸…

RTX3060 FP64测试与猜想

RTX3060 FP64测试与猜想 一.小结二.查看FP64的峰值性能三.打满FP64、FP32的利用率,对比差异四.进一步证明pipe_fp64_cycles_active并不是2个fp64 core的metrics RTX3060 FP64测试与猜想 一.小结 RTX3060 compute capability为8.6,每个SM有2个FP64 core。每个cycle可输出2个fp6…

在Linux中从视频流截取图片帧(ffmpeg )

Linux依赖说明: 说明: 使用到的 依赖包 1. ffmpegsudo apt update sudo apt-get install ffmpeg2. imagemagick (选装) (检测图像边缘信息推断清晰度,如果是简单截取但个图像帧>用不到<)sudo apt-get install imagemagick备注: 指令及相关参数说明核心指令: (作用: 执…

docker部署rabbitMQ 单机版

获取rabbit镜像&#xff1a;我们选择带有“mangement”的版本&#xff08;包含web管理页面&#xff09;&#xff1b; docker pull rabbitmq:management 创建并运行容器&#xff1a; docker run -d --name rabbitmq -p 5677:5672 -p 15677:15672 rabbitmq:management --name:…

InVEST实践及在生态系统服务供需、固碳、城市热岛、论文写作等实际项目中的具体应用

不论您是小白亦或是已经能够成功运行InVEST模型生成结果&#xff0c;您可以自由选择课程内容&#xff0c;如果您是小白老师手把手教您&#xff0c;如果您已经是InVEST模型熟悉者&#xff0c;已经为您准备了结合实际项目内容以及通过模型进行高质量的论文重现&#xff0c;还有很…

Java面试题-基础和框架-Java面试题二

1、什么是抽象类&#xff1f; 在 Java 中&#xff0c;抽象类用于创建具有某些被子类实现的默认方法的类&#xff0c;一个抽象类可以有没有方法体的抽象方法&#xff0c;也可以有和普通类一样有方法体的方法。 abstract 关键字用于声明一个抽象类&#xff0c;抽象类无法实例化…

Docker容器的基础命令操作大全(入门必看)

本指南将带您深入了解Docker的基本操作&#xff0c;包括镜像的管理、容器的创建与删除&#xff0c;以及如何高效地使用Docker进行开发和部署。通过这些内容&#xff0c;您将掌握Docker的核心概念&#xff0c;为未来的项目奠定坚实的基础。让我们一起开启这段探索之旅&#xff0…

安装open-webui报错

通过docker安装open-webui容器一直重启中 提示报错“OpenBLAS blas_thread_init: pthread_create failed for thread 1 of 16: Operation not permitted...” 解决&#xff1a; 在容器启动命令中加上--privilegedtrue

AIAutoPrediction足球数据分析软件工具安装教程(附带操作截图)

文章目录 前言一、AIAutoPrediction是什么&#xff1f;二、AIAutoPrediction能做什么&#xff1f;即时大小球预测即时亚盘预测大小球、亚盘初盘分析 三、安装教程1、软件下载2、打开安装包&#xff0c;进行软件安装3、选择安装目录4、执行安装5、安装完成6、开始使用 总结 前言…

Tomcat服务器安装SSL证书教程

Tomcat服务器安装SSL证书教程&#xff0c;主要包括获取证书、安装证书、重启Tomcat以及测试SSL证书是否安装成功等4大步骤&#xff0c;以下是详细图文教程。 一、获取证书 现在锐成信息申请一张SSL证书&#xff0c;证书申请成功后&#xff0c;会获取到颁发证书文件&#xff0…

队列+宽搜(BFS)

前言 宽搜属于搜索类算法 搜索类算法&#xff1a; 深搜&#xff08;DFS&#xff09;宽搜&#xff08;BFS&#xff09; 宽搜可以解决树、图、最短路径、迷宫、拓扑排序等问题 429. N 叉树的层序遍历 题目链接&#xff1a;429. N 叉树的层序遍历 题目解析 题目意思就是对这个…

ETCD的备份和恢复

一、引言 ETCD是一个高度可用的键值存储系统&#xff0c;被广泛应用于Kubernetes等分布式系统中以存储关键配置数据和服务发现信息。由于ETCD的重要性&#xff0c;确保其数据的安全性和可靠性至关重要。本文将介绍ETCD备份与恢复的基础知识、常用方法及最佳实践。 二、概述 …

Qt绘制动态仪表

背景&#xff1a; 项目需要&#xff0c;可能需要做一些仪表显示。此篇除了介绍实现方法&#xff0c;还要说明心路历程。对我而言&#xff0c;重要的是心理&#xff0c;而不是技术。写下来也是自勉。 本人起初心里是比较抵触的&#xff0c;从业20多年了&#xff0c;深知所谓界…

Linux 中 Tail 命令的 9 个实用示例

引言 我们作为 Linux 用户&#xff0c;经常会操作那些在后台长时间运行的进程&#xff0c;这些进程被称作守护进程或服务。例如 Secure Shell (sshd)、Network Manager (networkd)、Volume Manager (LVM)、Cron 等都是服务的典型例子&#xff0c;这样的服务还有很多。 在许多情…

1.10 DFT示例1

1.10 DFT示例1 Tips&#xff1a;离散傅里叶的不同角度的解释。 参考&#xff1a;https://mp.weixin.qq.com/s/TrRmqkc34Zqw9pgaITqlZg?poc_tokenHF5h1WajXiXCmFpwIbv1HaHN52KsET1UE29CM561 摘取部分核心观点&#xff1a; 站在高观点下看问题&#xff0c;傅里叶变换本质上是…

MySQL表的操作与数据类型

目录 前言 一、表的操作 1.创建一个表 2.查看表的结构 3.修改表 4.删除一个表 二、 MySQL的数据类型 0.数据类型一览&#xff1a; 1.整数类型 2.位类型 3.小数类型 4.字符类型 前言 在MySQL库的操作一文中介绍了有关MySQL库的操作&#xff0c;本节要讲解的是由库管理的结构——…

PointNet++改进策略 :模块改进 | x-Conv | PointCNN, 结合局部结构与全局排列提升模型性能

目录 前言PointCNN实现细节1. X X X-Conv 操作输入输出步骤 2. PointCNN 网络架构层级卷积分类与分割任务 3. 数据增强4. 效率优化 前言 这篇论文介绍了一种名为 PointCNN 的方法&#xff0c;旨在从点云&#xff08;point cloud&#xff09;数据中学习特征。传统卷积神经网络…