<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[vanexph的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/vanexph</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; vanexph]]></copyright><item><title><![CDATA[Haproxy动态分发到后端服务器]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/109069524</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/109069524</guid><author>vanexph</author><pubDate>Wed, 14 Oct 2020 12:02:18 +0800</pubDate><description><![CDATA[在实际的使用过程遇到这样一个需求，由于测试环境比较多，每个测试环境都是独立运行的，但是又只有一个域名来进行访问。这样在haproxy进行转发的时候就需要前端发送一个特定的头部信息来对响应的请求转发到相应的后端服务器。
这样设计的话就需要设置一个ｍａｐ文件来记录响应的头部对应的后端服务器地址。
其他的配置文件就不再给出，只给出响应的配置：
ｍａｐ文件serverip.map信息：
dev1 192.168.11.10
dev2 192.168.11.11

haproxy配置信息：
...
frontend ]]></description><category></category></item><item><title><![CDATA[Haproxy Cache]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/107460213</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/107460213</guid><author>vanexph</author><pubDate>Mon, 20 Jul 2020 13:58:58 +0800</pubDate><description><![CDATA[HAproxy提供了一个缓存机制。
这个缓存是基于进程与线程共享的内存，这个内存被分为每块大小1k的块。
如果块不再使用，它能够被删除来存储新的对象。
这个cache使用host头和rui的hash值作为key
当一个对象从缓存中得到传送地址，在日志中server name将会使用”“
限制：
在以下情况缓存中不会存储对象：
1、返回值不是200
2、返回头中包含Vary
3、Content-Length+ header size &gt;“max-object-size”
4、返回不可缓存
5、不使用GE]]></description><category></category></item><item><title><![CDATA[lua学习笔记]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/107038660</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/107038660</guid><author>vanexph</author><pubDate>Thu, 02 Jul 2020 16:40:38 +0800</pubDate><description><![CDATA[lua 八种基本类型
数值（number）					内部以double表示
字符串（string）					总是以0结尾，但可以包含任意字符，
布尔（boolean）					只有true和false，只有false和nil 代表失败
函数（function）					lua关键概念，并不简单等同于其他语言的函数，
表（table）							异构的hash表，关键概念
userdata								用户定义的c数据结构，脚本用户只能使用，不能定义
线程（thread）					lua协作线程（conr]]></description><category></category></item><item><title><![CDATA[HAProxy2.1 LUA API]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/106992209</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/106992209</guid><author>vanexph</author><pubDate>Mon, 29 Jun 2020 21:16:29 +0800</pubDate><description><![CDATA[一、HAProxy Lua运行上下文
lua 代码在haproxy中以两种模式执行，第一种是initialisation mode 第二种是runtime mode
1、在initialisation mode 中，可以执行dns解析，但是不能执行socket i/o,在这个模式中当lua脚本执行时haproxy将会blocked
2、在runtime mode中，不能执行dns解析，但是可以使用socket，执行lua脚本是和请求线程一致。
lua 代码可以在一个或者多个文件中导入，这些文件包括主要的代码]]></description><category></category></item><item><title><![CDATA[HAProxy 日志管理]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/106763110</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/106763110</guid><author>vanexph</author><pubDate>Mon, 15 Jun 2020 15:47:00 +0800</pubDate><description><![CDATA[一、rsyslog服务
在理解haproxy的log设置原理之前，先来了解一下linux中的系统日志服务，系统日志服务和其他服务一样，也有启动，停止，配置等。
配置文件：
/etc/rsyslog.conf
配置目录：
/etc/rsyslog.d/
也是在rsyslog.conf中include下rsyslog.d下的所有文件
启动，重启，停止命令：
systemctl start rsyslog
systemctl stop rsyslog
systemctl restart rsyslog
命令log]]></description><category></category></item><item><title><![CDATA[HAProxy中与ssl相关的配置项]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/106757522</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/106757522</guid><author>vanexph</author><pubDate>Mon, 15 Jun 2020 10:31:26 +0800</pubDate><description><![CDATA[与ssl相关的众多配置项出现在不同的模块，语法中，主要包括global，bind，server等
一、global
ca-base {dir}
crt-base {dir}
ssl-default-bind-ciphers {ciphers}
ssl-default-bind-options [{option}]…
ssl-default-server-ciphers {ciphers}
ssl-default-server-options [{option}]…
ssl-sh-param-file {fi]]></description><category></category></item><item><title><![CDATA[Haproxy中的acl的详解]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/106755856</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/106755856</guid><author>vanexph</author><pubDate>Mon, 15 Jun 2020 10:24:56 +0800</pubDate><description><![CDATA[haproxy 能够从请求报文，响应报文，从客户端或者服务器端，从表，环境信息等中提取数据，提取这样的数据的动作我们称之为获取样本，进行检索时，这些样本可以用来实现各种目的，比如作为粘滞表的键，最常用的用途是，根据预定义的模式来进行匹配。访问控制列表（ACL）提供一个灵活方案进行内容切换，或者从请求，响应，任何环境状态中提取的数据基础之上做出决策，控制列表的原则很简单：

从数据流，表，环境中提取数据样本
对提取的样本可选的应用格式转换
对一个样本应用一个或多个模式匹配
当模式匹配样本时才执行动作
执行的动]]></description><category></category></item><item><title><![CDATA[haproxy中的Proxies段的配置]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/106719157</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/106719157</guid><author>vanexph</author><pubDate>Fri, 12 Jun 2020 17:28:11 +0800</pubDate><description><![CDATA[在Haproxy中的代理的配置包括4个模块，defaults、listen、frontend、backend。
defaults：用于为所有其它配置段提供默认参数，listen、frontend、backend将使用defaults中的设置，如果想通的参数被重复设置，那么listen、frontend、backend的优先级高于defaults.
frontend：监听客户端的链接。
backend：代理的后端服务器。
listen：包括监听客户端和代理的后端服务器，是一个完整的代理的模块，通常使用在tcp]]></description><category></category></item><item><title><![CDATA[HAProxy 配置文件 -global]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/106715722</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/106715722</guid><author>vanexph</author><pubDate>Fri, 12 Jun 2020 16:36:42 +0800</pubDate><description><![CDATA[二、HAProxy 配置文件
haproxy配置参数的来源：

通过命令行参数（具有最高优先级，会覆盖配置文件中的配置）
通过global section 用于设置进程级别的参数
proxy section 可以通过：defaults，listen,frontend,backend
配置文件的语法：
每行以一个关键字开始，后接一个或多个参数，参数与参数之间以空格分割，注释行以#开头。

1、global
用于设定全局参数，属于进程级别的配置，通常与操作系统配置有关
常见配置：


log：全局日志配置。eg]]></description><category></category></item><item><title><![CDATA[Haproxy (安装)]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/106714814</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/106714814</guid><author>vanexph</author><pubDate>Fri, 12 Jun 2020 14:54:05 +0800</pubDate><description><![CDATA[centos 7 安装最新稳定版haproxy：
一、安装
1、系统准备：
由于haproxy中设计到ssl，所以在Linux中需要安装：
yum install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel systemd-devel.x86_64

2、haproxy 地址：https://github.com/haproxy/haproxy
下载v2.1.0版本：
wget https://github.com/ha]]></description><category></category></item><item><title><![CDATA[FastAPI 请求上下文及应用上下文]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/106336919</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/106336919</guid><author>vanexph</author><pubDate>Mon, 25 May 2020 19:04:14 +0800</pubDate><description><![CDATA[在fastapi的实际应用中发现，fastapi没有提供像flask中的g这样的上下文相关的东西。所以在查找了多方的资料发现，可以使用中间件，再加上Python3.7中的新特性contextvar可以实现应用上下文的管理。
contextvar可自行到官网进行学习。
这里着重讲解一下fastapi中怎么应用。
fastapi中的中间件，可实现对每次请求的request对象进行操作，然后执行请求内容，最后也可以对返回response进行处理。middleware用法参考我之前的文章。
fastapi基于sta]]></description><category></category></item><item><title><![CDATA[python 特殊方法]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/106260633</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/106260633</guid><author>vanexph</author><pubDate>Thu, 21 May 2020 16:52:02 +0800</pubDate><description><![CDATA[字符串、字节序列表示形式 :    __repr__,__str__,__format__,__bytes__
数值转换：
__abs__,__bool__,__complex__,__int__,__float__,__hash__,__index__
集合模拟：
__len__,__getitem__,__setitem__,__delitem__,__contains__
迭代枚举：
__iter__,__reversed__,__next__
可调用模拟：
__call__
上下文管理：
__ent]]></description><category></category></item><item><title><![CDATA[Python 装饰器应用]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/106234817</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/106234817</guid><author>vanexph</author><pubDate>Wed, 20 May 2020 16:24:11 +0800</pubDate><description><![CDATA[一、创建装饰器时保留函数元信息
当装饰器作用在某个函数上时，这个函数的重要元信息：名字，文档，注解和参数签名都会丢失。
可以使用functools库中的@wraps装饰器来注解底层包装函数。
eg：
import time
from functools import wraps
def timethis(func):
	@wraps(func)
	def wrapper(*args,**kwargs):
		start=time.time()
		result=func(*args,**kwargs)
		]]></description><category></category></item><item><title><![CDATA[fastapi(二十三)-高级用户指南]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/105068243</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/105068243</guid><author>vanexph</author><pubDate>Tue, 24 Mar 2020 13:40:01 +0800</pubDate><description><![CDATA[路径操作高级配置
OpenAPI的operationId
您可以使用operationId参数设置在路径操作中使用的OpenAPI operation_id。
from fastapi import FastAPI

app = FastAPI()


@app.get("/items/", operation_id="some_specific_id_you_define")
async def...]]></description><category></category></item><item><title><![CDATA[fastapi（二十二）-应用配置]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/105068124</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/105068124</guid><author>vanexph</author><pubDate>Tue, 24 Mar 2020 11:42:13 +0800</pubDate><description><![CDATA[您可以在FastAPI应用程序中配置几件事。
标题，描述和版本
您可以设置：

标题：在OpenAPI和自动API文档用户界面中，用作API的标题/名称。
Description：OpenAPI和自动API文档UI中对API的描述。
版本：API的版本，例如v2或2.5.0。

例如，如果您具有应用程序的先前版本（也使用OpenAPI），则很有用。



from fastapi import F...]]></description><category></category></item><item><title><![CDATA[fastapi（二十一）-后台任务]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/105067905</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/105067905</guid><author>vanexph</author><pubDate>Tue, 24 Mar 2020 11:38:49 +0800</pubDate><description><![CDATA[可以在返回response后运行后台任务。
这对于在请求之后需要进行的操作很有用，但是客户端实际上并不需要在收到响应之前就等待操作完成。
例如，这包括：

执行操作后发送的电子邮件通知：

由于连接到电子邮件服务器并发送电子邮件的过程通常很慢（几秒钟），因此您可以立即返回响应并在后台发送电子邮件通知。


处理数据：

例如，假设您收到的文件必须经过缓慢的处理，您可以返回“已接受”（HTTP 20...]]></description><category></category></item><item><title><![CDATA[fastapi(二十)-大型项目文件结构]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/105067098</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/105067098</guid><author>vanexph</author><pubDate>Tue, 24 Mar 2020 11:29:16 +0800</pubDate><description><![CDATA[如果需要构建应用程序或api，很少将所有的内容都放入一个文件中。
fastapi提供了一个方便的工具可灵活的构建应用。（类似于flask的蓝图）
假如文件结构如下：
.
├── app
│   ├── init.py
│   ├── main.py
│   └── routers
│       ├── init.py
│       ├── items.py
│       └── users....]]></description><category></category></item><item><title><![CDATA[fastapi(十九)-中间件]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/105066170</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/105066170</guid><author>vanexph</author><pubDate>Tue, 24 Mar 2020 11:03:21 +0800</pubDate><description><![CDATA[你可以添加中间件到你的fastapi应用程序中
“中间件”是一种函数，该函数可在每个请求由任何特定路径操作处理之前与每个请求一起使用。以及返回之前的每个响应。

它从你的应用程序中接收每个请求
然后，它可以对该请求执行某些操作或运行任何所需的代码。
然后，它传递要由应用程序其余部分处理的请求（通过某些路径操作）。
然后，它将获取应用程序生成的响应（通过某些路径操作）
它可以对响应做出响应或运行任何...]]></description><category></category></item><item><title><![CDATA[fastapi(十八)-jwt token]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/105051828</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/105051828</guid><author>vanexph</author><pubDate>Tue, 24 Mar 2020 10:31:53 +0800</pubDate><description><![CDATA[为了让我们的系统更加的安全，我们需要使用jwt token和真正的password hashing
关于JWT
jwt意思是“json web token”
看起来是这个样子的：
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyf...]]></description><category></category></item><item><title><![CDATA[fastapi(十七)-安全]]></title><link>https://blog.youkuaiyun.com/vanexph/article/details/105044664</link><guid>https://blog.youkuaiyun.com/vanexph/article/details/105044664</guid><author>vanexph</author><pubDate>Mon, 23 Mar 2020 16:41:01 +0800</pubDate><description><![CDATA[安全介绍
有许多方式去处理安全性，身份认证和授权。
并且它通常是一个复杂而又困难的话题。
fastapi提供一些工具去更容易的处理安全问题。
先来了解一些小的概念
1、OAuth2
OAuth2是一个规范，定义了几种处理身份验证和授权的方式。
它是一个相当广泛的规范，涵盖了几个复杂的用例。
它包括使用“第三方”进行身份验证的方法。
这就是所有带有“使用Facebook，Google，Twitter...]]></description><category></category></item></channel></rss>