JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

ollama通过反向代理实现Auth aop反向代理

wys521 2024-10-21 10:25:44 精选教程 45 ℃ 0 评论

使用反向代理来解决开源大模型服务系统缺乏授权机制的问题是一种常见的方法。通过反向代理,可以在请求到达目标服务之前进行身份验证和授权,从而确保只有经过认证的用户才能访问系统的功能。以下是实现这一目标的一般步骤:

  1. 部署反向代理:在系统架构中添加一个反向代理服务器,该服务器将充当客户端和目标服务之间的中间层。常见的反向代理软件包括Nginx、Apache HTTP Server等。
  2. 配置反向代理:在反向代理服务器上配置代理规则,将客户端的请求转发到目标服务。同时,配置反向代理以拦截所有进入的请求,并将其重定向到身份验证服务。
  3. 添加身份验证服务:在反向代理服务器后面部署一个身份验证服务,用于验证用户的身份并颁发访问令牌或者会话标识。
  4. 身份验证和授权:当客户端发送请求时,反向代理将请求重定向到身份验证服务,用户将被要求提供凭据进行身份验证。身份验证服务验证用户身份后,可以颁发访问令牌或者会话标识。
  5. 访问控制:反向代理根据身份验证服务返回的信息,决定是否允许请求通过。如果用户已经通过身份验证并且拥有相应的权限,则反向代理将请求转发到目标服务;否则,返回拒绝访问的错误信息。
  6. 定期更新和监控:定期更新反向代理和身份验证服务,以确保系统的安全性。同时,建立监控机制来监视系统的运行状态,及时发现并解决可能存在的问题。

通过以上步骤,可以利用反向代理来解决开源大模型服务系统缺乏授权机制的问题,提高系统的安全性和稳定性。

Nginx

以下是使用Nginx作为反向代理来实现身份验证和授权的具体步骤:

步骤一:安装Nginx

在服务器上安装Nginx。具体安装步骤取决于操作系统,可以通过包管理工具如apt、yum等进行安装。

步骤二:配置反向代理

  1. 打开Nginx配置文件,一般位于/etc/nginx/nginx.conf
  2. 在配置文件中添加反向代理的配置。以下是一个简单的示例:
server {
    listen 80;
    server_name example.com;

    location / {
        auth_basic "Restricted Access"; # 启用基本认证
        auth_basic_user_file /etc/nginx/.htpasswd; # 指定密码文件的位置

        proxy_pass http://127.0.0.1:11434; # 将请求转发到本地的11434端口
        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;
    }
}

在这个示例中,Nginx将监听80端口,并将所有收到的请求转发到本地的11434端口。同时,启用了基本认证,并指定了密码文件的位置。

步骤三:生成密码文件

生成密码文件.htpasswd,其中包含用户名和加密后的密码。

sudo sh -c "echo -n 'username:' >> /etc/nginx/.htpasswd"
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

步骤四:重启Nginx

在完成配置后,保存文件并重新启动Nginx服务。

sudo systemctl restart nginx

现在,Nginx将会拦截所有进入的请求,并要求用户提供用户名和密码进行身份验证。只有提供了正确的凭据的用户才能访问本地的11434端口。


Caddy

以下是如何将 HTTP Basic Authcaddy作为反向代理添加到localhost:11434,并自动处理 HTTPS:

1, 安装caddy

# Mac, Linux
curl https://webi.sh/caddy | sh

# Windows
curl.exe https://webi.ms/caddy | powershell

2 将您的密码(可能是 API 令牌)放入 password.txt

3 Digest the password

caddy hash-password < ./password.txt

4 将用户名和摘要放入 ENV 文件中 caddy.env:

BASIC_AUTH_USER='apitoken'
BASIC_USER_AUTH='$2a$14$sI1j0RbhzKHMZ4cHU8otHOkB3Dgl9egF2D.CXB6C0/Qk5dtaMHS/u'

5 使用 ENV创建具有基本身份验证的 Caddyfile

api.example.com {
    handle /* {
        basicauth {
            {env.BASIC_AUTH_USERNAME} {env.BASIC_AUTH_DIGEST}
        }
        reverse_proxy localhost:11434
    }
}

6 Run caddy

caddy run --config ./Caddyfile --envfile ./caddy.env

详见:How to secure the API with api key · Issue #849 · ollama/ollama

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表