Page-Assist项目Nginx代理配置问题解决方案

Page-Assist项目Nginx代理配置问题解决方案

page-assist Use your locally running AI models to assist you in your web browsing page-assist 项目地址: https://gitcode.com/gh_mirrors/pa/page-assist

在使用Page-Assist项目时,用户可能会遇到通过Nginx反向代理访问Ollama服务时出现403 Forbidden错误的问题。本文将详细分析问题原因并提供完整的解决方案。

问题背景

当用户尝试通过Nginx配置自定义URL路径访问Ollama服务时,例如配置形如http://mywebsite.com:6080/oollaammaa/11.11.4.2/11434的地址,前端页面会报出403 Forbidden错误,而直接访问拼接后的完整API地址却能正常响应。

问题分析

通过查看Nginx错误日志,可以发现关键错误信息:

invalid port in upstream ":/"

这表明Nginx在解析上游服务器地址时出现了问题。进一步分析发现,当请求URL不以斜杠结尾时,Nginx的正则表达式匹配会失败,导致无法正确提取IP地址、端口和API路径三个关键参数。

解决方案

完整的Nginx配置方案

以下是经过验证的有效配置方案:

location ^~ /oollaammaa/ {
    # 处理不以斜杠结尾的URL
    if ($request_uri ~ /oollaammaa/(.+)/(.+)) {
        set $node $1;
        set $port $2;
        set $api '';
    }
    
    # 处理包含API路径的URL
    if ($request_uri ~ /oollaammaa/(.+?)/(.+?)/(.*)) {
        set $node $1;
        set $port $2;
        set $api $3;
    }
    
    add_header Access-Control-Allow-Origin *;
    proxy_buffering off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Accept-Encoding "";
    proxy_pass http://$node:$port/$api;
}

关键改进点

  1. 双重正则匹配:新增了对不以斜杠结尾的URL的处理逻辑,确保无论URL格式如何都能正确提取参数。

  2. 非贪婪匹配:使用(.+?)进行非贪婪匹配,确保路径参数提取的准确性。

  3. 空API路径处理:当URL不包含具体API路径时,将$api变量设为空字符串。

配置说明

  1. location指令^~前缀表示优先匹配该location块,且不检查正则表达式。

  2. 变量提取:通过正则表达式从请求URI中提取节点IP($node)、端口($port)和API路径($api)。

  3. 代理设置:配置了必要的代理头信息,确保请求能正确转发到后端服务。

  4. CORS支持:添加了Access-Control-Allow-Origin *头,解决跨域问题。

项目配置建议

在Page-Assist项目中,建议做以下配置:

  1. 将Ollama URL设置为完整的代理路径,如:http://mywebsite.com:6080/oollaammaa/11.11.2.5/11434

  2. 禁用"Enable Custom Origin URL"选项

  3. 确保Nginx配置中包含上述完整的location块

总结

通过优化Nginx的正则表达式匹配逻辑,特别是增加对不以斜杠结尾的URL的处理,可以有效解决Page-Assist项目通过Nginx代理访问Ollama服务时的403 Forbidden错误。这种配置方案具有较好的通用性,可以适应不同的URL格式需求。

对于使用反向代理的场景,建议开发者充分理解Nginx的匹配机制和变量传递方式,这有助于快速定位和解决类似的代理转发问题。

page-assist Use your locally running AI models to assist you in your web browsing page-assist 项目地址: https://gitcode.com/gh_mirrors/pa/page-assist

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郁俭美Gertrude

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值