
联系老板
请加QQ,备注留言 frp-你的用户名
,领取红包,扫码支付更优惠
2023年6月17日...大约 4 分钟
学的越多,会的越少
learn more,know less
请加QQ,备注留言 frp-你的用户名
,领取红包,扫码支付更优惠
more
注释之前的内容被视为文章摘要。
提示
支持显示请求头信息、发送信息、主动断开、为后续客户端之间的会话提供的客户端List
# -*- coding: UTF-8 -*-
#!/usr/bin/env python3
"""
Echo server using the asyncio API.
pip install websockets==15.0.1
"""
import asyncio
import sys
import json
from websockets.asyncio.server import serve
from websockets.exceptions import ConnectionClosed
websocketList = []
async def echo(websocket):
print(f"客户端连接成功,客户端信息如下:")
# json 化请求头信息
headerDict = {}
headerDict.setdefault("path",websocket.request.path)
remote_addr = f"{websocket.remote_address[0]}:{websocket.remote_address[1]}"
headerDict.setdefault("remote_addr",remote_addr)
for header,value in websocket.request.headers.raw_items():
headerDict.setdefault(header,value)
headers = json.dumps(headerDict,indent=4)
print(headers)
# 发送欢迎信息
await websocket.send(f"Welcome Access My WebSocket Server! 当前有 {len(websocketList)}个客户端,你是第 {len(websocketList)+1} 个")
# 添加到列表
websocketList.append(websocket)
# 执行监听用户输入信息
try :
async for message in websocket:
if message.lower() == "exit":
await websocket.close()
print("客户端连接已关闭")
elif message.lower() == "header":
await websocket.send(headers)
else:
await websocket.send(message)
except ConnectionClosed:
print("客户端主动断开")
# 断开连接后,删除列表中的记录
print("客户端主动断开")
websocketList.remove(websocket)
# 主进程入口
async def main():
try:
port = int(sys.argv[1]) if len(sys.argv) == 2 else 8765
async with serve(echo, "0.0.0.0", port) as server:
print(f"WebSocket 服务器运行在 {port} 端口!")
await server.serve_forever()
except ValueError:
print("端口号必须是整数")
except Exception as e:
print(f"服务器启动失败: {e}")
if __name__ == "__main__":
try:
asyncio.run(main())
except KeyboardInterrupt:
print("\n手动停止服务器")
location 指令是 Nginx 配置中最核心的指令之一,用于匹配请求 URI 并定义如何处理这些请求。下面我将详细介绍 location 的用法并提供实际案例。
基本语法
location [修饰符] 匹配模式 {
# 配置指令
}
caddy 下载
官方地址:https://update.code.visualstudio.com/latest/server-linux-x64-web/stable
wget "https://update.code.visualstudio.com/latest/server-linux-x64-web/stable" -O vscode.tar.gz
防盗链
#防以 jpg或png 结尾的文件盗链 (~)使用正则匹配,忽略大小写
location ~ .(jpg|png)$
{
valid_referers none blocked www.example.com *.example.com;
root html;
if ($invalid_referer){ return 403; }
}
方法2
location ~ .(jpg|png)$
{
if ($host != ".example.com") {return 403;}
}
Content-Security-Policy (CSP)
是一种 web 安全机制,用于防止跨站脚本 (XSS)、数据注入等攻击。通过配置 CSP,您可以限制网页上哪些资源可以被加载以及如何加载。
CSP 支持多种策略,常用的包括以下几种:
default-src
:设置默认的资源加载策略,如果没有为特定类型的资源指定策略,默认使用 default-src
。主机 | IP | 操作系统 | port | 账号 | 密码(base64) | 节点ID | 软件 |
---|---|---|---|---|---|---|---|
Master01 | 192.168.1.20 | Debian12 | 3306 | replicator | TWFyaWFkYkAyMDI0 | 1 | mariadb-server-10.5/ |
Master02 | 192.168.8.20 | Debian12 | 3306 | replicator | TWFyaWFkYkAyMDI0 | 2 | mariadb-server-10.5/ |
切记
一定要刷新权限
FLUSH PRIVILEGES;