一、安装 Ollama
从官网下载安装 Ollama。
查看版本号:
ollama --version
二、在 shell 中安装和运行模型
在 Models 中选择一个你想部署的模型,复制安装命令,并在终端中执行。
官方建议:应该至少有 8 GB 的 RAM 来运行 7b 版本,16 GB 的 RAM 来运行 13b 版本,32 GB 的 RAM 来运行 33b 版本。
本文以 deepseek-r1:7b 为例。
下载模型
ollama pull deepseek-r1:7b
Tip: 下载即将完成时速度可能会变得非常慢,只要按 Ctrl+C,再重新执行一次命令,就会继续正常下载。
显示模型信息
ollama show deepseek-r1:7b
运行模型(一次性响应)
ollama run deepseek-r1:7b "写一首诗"
运行模型(进入聊天模式)
ollama run deepseek-r1:7b
结束当前会话
/bye
列出所有模型
ollama list
列出当前加载的模型
ollama ps
停止当前正在运行的模型
ollama stop deepseek-r1:7b
三、使用 REST API 调用模型
修改端口
ollama serve --port 11434
/api/generate 接口:生成一次性响应
curl http://localhost:11434/api/generate -d '{
"model": "deepseek-r1:7b",
"prompt":"为什么天空是蓝色的?"
}'
/api/chat 接口:与模型聊天
curl http://localhost:11434/api/chat -d '{
"model": "deepseek-r1:7b",
"messages": [
{ "role": "user", "content": "你好呀!" }
]
}'
四、在 .NET 中调用
1、直接 HTTP 调用(基础方案)
创建 HttpClient,使用 PostAsJsonAsync 请求,使用 ReadFromJsonAsync 读取结果。
2、使用 OllamaSharp 库(推荐方案)
创建 OllamaApiClient,使用 SelectedModel 设置模型,使用 GenerateAsync 获得结果。或创建对话 ollama.Chat(),并 Send 内容。
3、.NET Aspire 集成(企业级方案)
适合微服务架构,结合容器化部署。
“OllamaSharp 库”和“.NET Aspire 集成”两种方案怎么选?
OllamaSharp 库:定位轻量级模型交互 SDK,适用于独立应用、微服务中的 AI 组件等场景,技术复度低,支持模型对话/生成/管理、流式响应、多模态支持,需自行实现监控、熔断。
.NET Aspire 集成:定位企业级云原生 AI 服务编排框架,适用于多服务协同的分布式系统,技术复度高,支持服务编排、健康检查、弹性伸缩、混合云部署,内置可观测性仪表盘、自动故障转移。
决策建议:初创项目用 OllamaSharp 快速试错,用户量破千后通过 Aspire 重构。两者并非互斥,可在 Aspire 中封装 OllamaSharp 客户端,兼顾灵活性与运维能力。

安装 PyPI(包/库/组件):
pip install 包名
如果安装失败,尝试用国内镜像
pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple
如果不想每次都加 -i 参数,可以更改全局配置
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
查看所有配置
pip config list
查看 python 文件路径
# Windows 或 Linux 通用
python -c "import sys; print(sys.executable)"
默认路径为:C:\Users\<user name>\AppData\Local\Programs\Python\Python<version>\python.exe
常用组件介绍
包名 | 介绍 |
---|---|
Flask | 一款基于 Python 的轻量级 Web 开发框架 |
Django | 一款基于 Python 的重量级 Web 开发框架 |
Pandas | 一个数据分析包,提供 Series、Time-Series、DataFrame、Panel、Panel4D、PanelND 等数据结构 |
更多

一般地,在路由器上启用 UPnP 就可以了。
如果局域网中有多台监控设备,或有多层局域网,可以尝试直接端口映射。
在监控控制面板中查看主机 IP(注意不是各通道的 IP),或者在同一层局域网通过电脑浏览器中访问监控控制面板(http://主机ip)。
然后就可以在路由器上配置端口映射了(有些路由器的菜单项为“NAT 服务”)。
一般配置 554(RTSP 端口)和 8000(服务端口)就可以了,80(HTTP 端口)和 443(HTTPS 端口)用于通过浏览器管理监控系统,不需要在外网配置的话不需要映射,暴露在公网有安全风险。另外 9010(平台命令端口)和 9020(平台数据端口)作用未知,可不映射。
当然,为了防止端口冲突或提高安全性,映射的外部端口和内部端口可以不相同。

本文介绍 Token 认证和 HMAC 认证两种方式。
一、Token 接口认证方式
原理:
客户端使用账号密码等信息登录,服务器验证通过后生成一个 Token 发送给客户端。客户端在后续的请求中携带这个 Token,服务器通过验证 Token 来确认用户的身份和权限。
应用场景:移动应用、Web 应用(特别是 SPA)
优点:
无状态性,即服务器不需要存储用户的会话信息。
易于实现跨域认证。
缺点:
Token 可能被窃取,应使用 HTTPS、不暴露在 URL 中、使用 HttpOnly 的 Cookie、对 Session ID 进行验证、设置合理过期时间、对 Token 进行加密等措施加强防范。
二、HMAC 接口认证方式
原理:
客户端将消息M与密钥K连接起来,通过哈希函数计算得到 HMAC 值,发送给服务器。服务器收到请求后,使用相同的密钥和请求参数重新计算 HMAC 值,如果与客户端发送的签名一致,即是合法请求。
优点:
安全性较高,攻击者很难伪造 HMAC 值,截获并篡改数据也无法通过服务端验证。
计算效率较高,哈希函数(如 MD5、SHA-1、SHA-256 等)计算效率比较高。
缺点:
密钥的更新和管理比较麻烦。
扩展:
在消息体中添加时间戳以防止重放攻击。
加密隐私数据:可以使用对称加密算法(如 AES)或非对称加密算法(如 RSA、ECC 等)对部分隐私数据进行加密。非对称算法虽然更安全,但速度较慢,如需加密大量数据,可以考虑使用对称加密算法进行加密,然后使用非对称加密算法对对称密钥进行加密。

国家智慧教育公共服务平台 https://gjzwfw.www.gov.cn/
中国裁判文书网 https://wenshu.court.gov.cn/
国家企业信用信息公示系统 https://gs.gsxt.gov.cn/
国家社会保险服务平台 https://si.12333.gov.cn/
国家法律法规数据库 https://flk.npc.gov.cn/
中国专利公布公告网 http://epub.cnipa.gov.cn/
国家标准全文公开系统 https://openstd.samr.gov.cn/bzgk/gb/
国家药品监督管理局 https://www.nmpa.gov.cn/datasearch/
食品安全抽检公布结果查询系统 https://spcjsac.gsxt.gov.cn/
工信部申诉受理中心 https://ythzxfw.miit.gov.cn/
合同示范文本库 https://htsfwb.samr.gov.cn/
中国法律服务网 https://www.12348.gov.cn/
中国庭审公开网 https://tingshen.court.gov.cn/
非 gov 网站
终身教育平台 https://le.ouchn.cn/
国家数字图书馆 https://www.nlc.cn/
国家哲学社会科学文献 https://www.ncpssd.cn/
国家高等教育智慧教育平台 https://www.chinaooc.com.cn/
职业教育专业教学资源库 https://zyk.icve.com.cn/
本文仅针对自己遇到的情况进行整理,并不完善,仅供参考。
首先点击这个封禁页面上的“客服指引”,在“微信访问网站被限制的相关问题”页面上找到反馈邮箱 moment@tencent.com,按规定格式给这个邮箱反馈情况,可以咨询具体被封禁的原因和网址等方便处理。几分钟后就能收到回信(即使是周末)。这次被告知是被手机管家拦截,并提供了另一个申述通道:http://gj.qq.com/online_server/complain_url.html。提交网址申述后等待3个工作日。
实际等了1个小时就收到回复了(即使是周末)。
附:在线网址检测:https://urlsec.qq.com/check.html

连接 Filezilla Server 时提示“服务器的证书未知。请小心验证证书以确信该服务器可信任。”
解决办法:登录服务器,打开 Administrator FileZilla Server,菜单中选择 Server,Configure,点击左侧的 Administration,切换到 Connection security 页,点击 Generate new 按钮,OK。
Protocols settings 的 FTP and FTP over TLS(FTPS) 中同样也需要点击 Generate new。

前几天实现了在 nginx 中使用 lua 实现远程鉴权,今天想试试在 IIS 中能不能实现相同的功能。查询资料发现需要使用 URL 重写和 HTTP 请求模块,没有深究。干脆使用 ASP.NET 中间件来实现吧。
在 StratUp.cs 的 Configure 方法中,或 Program.cs 文件中添加以下代码:
// 远程鉴权
app.Use(async (context, next) =>
{
var ip = context.Connection.RemoteIpAddress!.ToString();
var ua = context.Request.Headers.UserAgent.ToString();
var host = context.Request.Host.Host;
var uri = new Uri(context.Request.GetDisplayUrl()).PathAndQuery;
var client = new HttpClient();
client.Timeout = TimeSpan.FromSeconds(1); // 设置超时时间
try
{
var requestUrl = "https://鉴权地址/";
var requestMessage = new HttpRequestMessage(HttpMethod.Get, requestUrl);
requestMessage.Headers.Add("X-Real-IP", ip);
requestMessage.Headers.Add("User-Agent", ua);
requestMessage.Headers.Add("X-Forwarded-Host", host);
requestMessage.Headers.Add("X-Forwarded-Uri", uri);
// 发送请求
var response = await client.SendAsync(requestMessage);
// 检查响应状态码
if (response.StatusCode == HttpStatusCode.Forbidden)
{
// 如果返回403,则拒绝访问
context.Response.StatusCode = (int)HttpStatusCode.Forbidden;
await context.Response.WriteAsync("Access Denied");
}
else
{
// 如果返回其他状态码,则继续执行管道中的下一个中间件
await next();
}
}
catch (TaskCanceledException ex) when (ex.CancellationToken.IsCancellationRequested)
{
// 如果请求超时(任务被取消),则继续执行管道中的下一个中间件
await next();
}
catch
{
// 如果遇到错误,则继续执行管道中的下一个中间件
await next();
}
});
代码很简单,使用 HttpClient 发送请求,若返回 403 则拒绝访问,其它情况继续执行业务逻辑,超时或报错的情况按需修改即可。
若鉴权接口在私网中,建议将鉴权接口域名和私网 IP 添加到 hosts 文件中。

在 access_by_lua_block 代码块中实现远程鉴权:
#鉴权-START #resolver 223.5.5.5; # cat /etc/resolv.conf access_by_lua_block { local http = require("resty.http") local httpc = http.new() httpc:set_timeout(500) -- 连接超时 local res, err = httpc:request_uri("https://鉴权地址/", { method = "GET", headers = { ["X-Real-IP"] = ngx.var.remote_addr, ["User-Agent"] = ngx.var.http_user_agent, ["X-Forwarded-Host"] = ngx.var.host, ["X-Forwarded-Uri"] = ngx.var.request_uri, }, ssl_verify = false, -- 禁用 SSL 验证 timeout = 500, -- 读取超时 }) if not res then ngx.log(ngx.ERR, "Failed to request: " .. err) end if res and res.status == 403 then ngx.exit(ngx.HTTP_FORBIDDEN) -- return ngx.redirect("https://一个显示403友好信息的页面.html") end } #鉴权-END
注意更改接口地址和友情显示 403 页面地址。
本示例仅捕获 403 状态码,500、408 等其它异常情况视为允许访问,请根据业务需求自行添加状态码的判断。
若超时也会进入
if not res then
代码块。建议将此代码部署在 nginx 主配置文件的 http 代码块中(宝塔面板中的路径:/www/server/nginx/nginx/conf/nginx.conf),如果你只想为单个网站鉴权,也可以放在网站配置文件的 server 块中。
若鉴权接口在私网中,建议将鉴权接口域名和私网 IP 添加到 hosts 文件中。
附
直接输出字符串
ngx.header.content_type = "text/plain"; ngx.say("hello world!")
输出到日志
ngx.log(ngx.ERR, "Response status: " .. res.status)
日志在网站的 站名.error.log 中查看。
宝塔面板查看方式:日志 - 网站日志 - 异常
若想获取服务器 CPU 使用率等信息并传递给远程鉴权接口,请参考此文。
常见问题
no resolver defined to resolve
原因:没有定义 DNS 解析器
解决方法:在 http 块或 server 块中添加
resolver 8.8.8.8 valid=30s;
,推荐使用接入商自己的公共 DNS,如果走内网,推荐使用本机 DNS。unable to get local issuer certificate
原因:没有配置 SSL 证书信息
解决方法:添加 request_uri 参数:
ssl_verify = true, -- 启用 SSL 验证 ssl_trusted_certificate = "证书路径", -- 指定 CA 证书路径
或
ssl_verify = false, -- 禁用 SSL 验证
若您不想用 lua,可以用 nginx 原生自带的 auth_request 模块来实现。

安装依赖
sudo yum install -y epel-release sudo yum install -y lua lua-devel gcc make
下载安装 LuaRocks
访问 LuaRocks 的官方网站 获取最新版本的 LuaRocks。你可以使用 wget 命令下载:
wget https://luarocks.org/releases/luarocks-x.x.x.tar.gz tar zxpf luarocks-x.x.x.tar.gz cd luarocks-x.x.x ./configure && make && sudo make install
设置环境变量(可选)
通常,LuaRocks 会自动处理这一步,但如果需要手动设置,可以编辑 ~/.bash_profile 或 ~/.bashrc 文件,添加以下行:
export PATH=$PATH:/usr/local/bin
然后运行以下命令使更改生效:
source ~/.bash_profile
验证安装
luarocks --version
