[nginx] 使用nginx代理实现Ollama支持本地html访问

Ollama 可以用来快速部署种种AI大模型、嵌入模型,比如 DeepSeek。

其自身也可以通过环境配置实现跨域支持,比如在 windows 中部署的 ollama,可以在环境变量中增加 OLLAMA_HOST=0.0.0.0:11434 来指定监听的网络端口和绑定的IP地址,OLLAMA_ORIGINS=* 允许跨域,OLLAMA_MODELS=D:\models 指定模型存放位置等。

我们也可以使用 nginx 代理实现跨域支持,修改 nginx 的 nginx.conf (一般位于 etc\nginx\nginx.conf):

... 

http {
    ...
    # 添加 Origin 映射,如果请求的 `origin` 为 `null` 则设为 `http://127.0.0.1` (本地html直接请求时会是null)
    map $http_origin $origin {
        default $http_origin;
        "null" "http://127.0.0.1";
    }
    ...
    server {
        ...
        location /ollama/ {    
            if ($request_method = 'OPTIONS') {
              # 只需要返回状态 200 和 CORS 头部
              add_header Access-Control-Allow-Origin *;
              add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS, PUT, DELETE';
              add_header Access-Control-Allow-Headers 'Origin, X-Requested-With, Content-Type, Accept, Authorization';
              add_header Access-Control-Max-Age 3600;
              return 204;
            }
            proxy_set_header Origin $origin;
            proxy_pass http://127.0.0.1:11434/;             
            add_header Access-Control-Allow-Origin '*' always;  # 允许任何源访问
            add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';  # 允许的请求方法
            add_header Access-Control-Allow-Headers 'Content-Type';  # 允许的请求头
            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_cache off; 
            proxy_set_header Content-Type '';            
        }
        ...
    }
}


保存配置并重启 nginx 服务后,假如 nginx 服务开的端口是 1234, 就可以通过 http://127.0.0.1:1234/ollama 来代替 http://127.0.0.1:11434 跨域访问了。

posted @ 2025-02-24 10:07  我爱我家喵喵  阅读(1105)  评论(0)    收藏  举报