简介

作者:京城郭少

基于nginx的4层代理管理平台

支持的功能:

  • 被动健康检查
  • 白名单
  • include导入文件
  • 哈希
  • backup冗余互备
  • weight权重
  • 注释
  • ......

部署openfly

部署nginx:

  • 目标:部署一个支持stream模块的nginx。
  • 步骤仅供参考,可自行发挥。
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
yum install -y gc gcc gcc-c++ pcre-devel zlib-devel openssl-devel libxslt-devel GeoIP-devel perl-ExtUtils-Embed make
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -xvf nginx-1.24.0.tar.gz
cd nginx-1.24.0/
mkdir -p /usr/local/nginx
# 关键在于--with-stream=dynamic --with-stream_ssl_module
./configure --prefix=/usr/local/nginx --with-file-aio --with-http_auth_request_module --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module
make && make install
cp -r contrib/vim/* /usr/share/vim/vimfiles/
ln -s /usr/local/nginx/conf/ /etc/nginx
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target [Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/bin/rm -f /usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true [Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl restart nginx
systemctl enable nginx

配置nginx:

  • 目标:配置一个4层代理的目录(此目录托管给openfly,生成相应的4层代理配置)
mkdir -p /etc/nginx/stream.d
vim /etc/nginx/nginx.conf
load_module /usr/local/nginx/modules/ngx_stream_module.so; # 此配置放在文件的首行
......
stream {
include /etc/nginx/stream.d/*.conf;
}
nginx -t
nginx -s reload

部署etcd:

yum install -y etcd
vim /etc/etcd/etcd.conf
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
systemctl enable --now etcd
vim /etc/bashrc
export ETCDCTL_API=3
source /etc/bashrc

启动openfly

# 会生成data目录,里面都是nginx的4层代理配置文件,nginx需要导入这个目录:include xxx/data/*.conf;
vim config-vx.x.x.toml # 编辑配置文件
./openfly-vx.x.x -c config-vx.x.x.toml # 启动openfly

Demo:添加一个nginx配置

token=$(curl -s -XPOST http://127.0.0.1:1216/v1/login -d "{\"username\":\"admin\",\"password\":\"admin\"}" -H "Content-Type: application/json" | jq -r .data)
curl -i -H "Content-Type: application/json" -XPOST -H "Authorization: ${token}" http://127.0.0.1:1216/v1/admin/nginx/add -d '
{
"listen":30001,
"upstream":{
"hosts":[
{
"ip":"1.1.1.1",
"port":53
}
]
}
}'

API

在这里可以查看各版本的API:https://github.com/GuoFlight/openfly/tree/main/docs

openfly:基于nginx的4层代理管理平台的更多相关文章

  1. 基于 Java Web 的毕业设计选题管理平台--选题报告与需求规格说明书

    一.选题报告 目录 团队名称 团队成员 项目名称 项目描述 创新与收益 用户场景分析 真实用户调研 未来市场与竞争 项目导图 比例权重 总结 1.团队名称--指南者团队 2.团队成员 孔潭活:2015 ...

  2. 基于 Java Web 的毕业设计选题管理平台--测试报告与用户手册

    一.测试报告 1.兼容性测试 功能 描述 效果 Chrome浏览器 FireFox浏览器 IE浏览器 war 端浏览器 管理员登录 管理员用户登录功能 弹出“登录成功”对话框,进入到毕业设计选题管理平 ...

  3. nginx 多级7层代理安装配置

    编译安装 yum install zlib-devel -y wget https://nginx.org/download/nginx-1.15.12.tar.gz tar -zxf nginx-1 ...

  4. 基于nginx的WebSocket反向代理

    系统:windows 版本:nginx 1.4.5 配置内容: location ~ \.do$ {             proxy_pass   http://192.168.20.102:80 ...

  5. 编译安装基于nginx与lua的高性能web平台-openresty

    1.首先编译安装nginx(不多说) 2.开始安装openresty cd /usr/local/src wget https://openresty.org/download/openresty-1 ...

  6. 基于 Java Web 的毕业设计选题管理平台--系统设计和任务分配

    一.团队作业:http://www.yzhiliao.com/course/70/task/440/show 二.个人作业: 1.项目的代码托管 (1).GitHub 地址:https://githu ...

  7. OpenResty:通过 Lua 扩展 NGINX 实现的可伸缩的 Web 平台

    关于 http://openresty.org/cn/about.html 这个开源 Web 平台主要由章亦春(agentzh)维护.在 2011 年之前曾由淘宝网赞助,在后来的 2012 ~ 201 ...

  8. 通过 Lua 扩展 NGINX 实现的可伸缩的 Web 平台OpenResty®

    OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高的动态 W ...

  9. 【Python成长之路】从 零做网站开发 -- 基于Flask和JQuery,实现表格管理平台

    [写在前面] 你要开发网站?    嗯.. 会Flask吗?    什么东西,没听过... 会JQuery吗?    是python的库吗 ? 那你会什么?    我会F12打开网站 好吧,那我们来写 ...

  10. 从零做网站开发:基于Flask和JQuery,实现表格管理平台

    摘要:本文将为大家带来基于Flask框架和JQuery实现管理平台网站的开发功能. [写在前面] 你要开发网站? 嗯.. 会Flask吗? 什么东西,没听过... 会JQuery吗? 是python的 ...

随机推荐

  1. 使用 Docker 部署 moments 微信朋友圈

    1)项目介绍 GitHub:https://github.com/kingwrcy/moments 今天给大家分享一个 类似微信朋友圈 的项目 moments,适合用于记录生活. 2)项目特色 支持匿 ...

  2. 题解:ssy的队列

    题目链接 题目描述 SSY是班集体育委员,总喜欢把班级同学排成各种奇怪的队形,现在班级里有 \(N\) 个身高互不相同的同学,请你求出这 \(N\) 个人的所有排列中任意两个相邻同学的身高差均不为给定 ...

  3. 网络协议分析与抓包 TCP/IP UDP等

    学习地址: https://www.bilibili.com/video/BV1hV411U74y?p=4 https://www.bilibili.com/video/BV1S7411R7kF?p= ...

  4. python教程8-页面爬虫

    python爬虫常用requests和beautifulSoup这2个第三方模块.需要先进行手动安装. requests负责下载页面数据,beautifulSoup负责解析页面标签. 关于beauti ...

  5. C#语言:散修笔记

    文章目录 前言 数组的几种定义方法 out 和 ref 的区别 可变参数params 静态方法与非静态方法 >❀什么时候使用静态和非静态 构造函数 >❀类中方法的重载 >❀在类中输出 ...

  6. linux 文件的特殊权限:suid sgid sticky

    目录 一.关于文件的特殊权限 二.suid 三.SGID 四.Stickybit 一.关于文件的特殊权限 1.文件与目录设置不止基础权限:r,w,x,还有所谓的特殊权限.特殊权限会拥有一些" ...

  7. linux下常用的快捷键和$参数

    1.下面介绍两个在linux下非常有用的$参数 2.!$ 表示引用上一个命令的最后一个参数,例子如下: [root@node5 ~]# echo '!$的作用是引用上一个命令的最后一个参数' > ...

  8. Pandas学习之路【1】

    安装pandas: pip install pandas pandas读取数据: 数据类型 读取方式 csv, tsv, txt pd.read_csv Excel pd.read_excel mys ...

  9. AppFlow上新——智谱ChatGLM轻松接入聊天

    智谱AI 开放平台提供一系列具有不同功能和定价的大模型,包括通用大模型.超拟人大模型.图像大模型.向量大模型等,并且支持使用您的私有数据对模型进行微调.其中ChatGLM系列模型在国内也享有盛名,现在 ...

  10. FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流

    ​<FFmpeg开发实战:从零基础到短视频上线>一书在第10章介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议的推拉流.不过MediaMTX的功能 ...