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

安装OpenResty(Linux-Docker)

文章目录

  • 创建挂载目录的配置文件和日志
  • 通过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 thentarget_server = specific_header
endngx.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.mrgr.cn/news/23372.html

相关文章:

  • 什么是话费充值api接口?话费充值API接口如何对接?
  • Linux下快速比较两个目录的不同,包括文件内容
  • 2024年身份验证技术应用的10大发展趋势
  • HTML转义字符对照表
  • Spring Cloud全解析:熔断之Hystrix线程隔离导致的问题
  • 如何在NXP源码基础上适配ELF 1开发板的PWM功能
  • React(v18)事件原理
  • 具体的散列表实现示例
  • SpringBoot2:请求处理原理分析-接口参数解析原理(argumentResolvers)
  • MIT License:全面解析与商用指南
  • 医疗设备运营管理,帮助医院实现智能管理评级
  • 兼顾身份保护和文本对齐!中山大学等提出CoRe:任意提示的文本到图像个性化生成!
  • openpose1.7.0编译 cuda12.2 cudnn 8.9.7.29 python3.7
  • 鼠标点击来动态确定 HSV 范围
  • window关闭端口程序
  • AbyssFish单连通周期边界多孔结构2D软件 V2.0版本更新
  • [晕事]今天做了件晕事43 python-byte串长度与转义字符
  • 戏曲文化苑管理系统小程序的设计
  • 问:Java中HashMap和Hashtable区别,知多少?
  • linux-用户与权限管理-组管理