Dify配置https协议

Dify配置https协议访问

我们再本地开发时服务启动后登录系统时无法登录,查看浏览器控制台发现访问后端接口均提示 401。这是由于前端和后的域名/网址不一致,导致前端和服务端跨域。

通过官方文档说明解决服务端与 web 客户端跨域,服务端必须为 https。

1、服务端配置https网关

由于部署dify的web、api端使用的nginx做的代理网关,因此我们只需对nginx进行配置https协议即可。在配置之前我们需要准备 server.pemserver.key 两个格式的证书文件。

进入 /dify-0.3.22/docker/nginx/conf.d 文件中,创建 cacerts 文件将 server.pemserver.key 放入该目录中。编辑 default.conf 文件:(这里我增加了logs日志的打印,可以忽略)

server {
	listen 443 ssl;
	server_name 域名;
	ssl on;
	ssl_certificate /etc/nginx/conf.d/cacerts/server.pem;
	ssl_certificate_key /etc/nginx/conf.d/cacerts/server.key;
	access_log /etc/nginx/conf.d/logs/access.log  main;
	error_log /etc/nginx/conf.d/logs/error.log  info;

    location /console/api {
      proxy_pass http://api:5001;
      include proxy.conf;
    }

    location /api {
      proxy_pass http://api:5001;
      include proxy.conf;
    }

    location /v1 {
      proxy_pass http://api:5001;
      include proxy.conf;
    }

    location / {
      proxy_pass http://web:3000;
      include proxy.conf;
    }
}

这里将原本的80端口改为443端口,增加了证书文件的配置。同步需要将docker容器映射的端口进行修改

2、修改服务端容器端口映射配置

进入/dify-0.3.22/docker目录下,编辑docker-compose.yaml文件,

  1. 修改映射端口,将80:80替换为443:443。例如:

    nginx:
    image: nginx:latest
    volumes:
    - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    - ./nginx/proxy.conf:/etc/nginx/proxy.conf
    - ./nginx/conf.d:/etc/nginx/conf.d
    depends_on:
    - api
    - web
    ports:
    - "443:443"

  2. 修改跨域策略 (请勿应在生产)

    WEB_API_CORS_ALLOW_ORIGINS: ''
    CONSOLE_CORS_ALLOW_ORIGINS: '
    '
    COOKIE_HTTPONLY: 'true'
    COOKIE_SAMESITE: 'None'
    COOKIE_SECURE: 'true'

由于 SameSite=None 必须配合 Secure=true,因此服务端必须为 https 协议才能实现跨域访问。

3、本地web服务配置服务端API

修改web跟目录下的.env文件,这里必须配置域名,不能配置IP

NEXT_PUBLIC_API_PREFIX=https://域名/console/api
NEXT_PUBLIC_PUBLIC_API_PREFIX=https://域名/api

注意:配置域名的地方需填写你项目中实际的域名

相关推荐
一碗手擀面3 分钟前
docker镜像发布的应用程序,其配置https的流程
docker·容器·https
老马识途2.013 分钟前
工作中,当遇到要把http请求变成https时 怎么处理
网络协议·http·https
william08201237 分钟前
微信小程序使用的SSL证书在哪里申请?
服务器·网络安全·微信小程序·小程序·https·ssl
Albert XUU44 分钟前
nettrace rtt分析器
linux·运维·网络·网络协议·网络安全·腾讯云·运维开发
桃酥4031 小时前
17、UDP怎么实现可靠传输【中高频】
网络·网络协议·udp
小度爱学习2 小时前
BGP 规划问题、路由黑洞与环路
网络·网络协议·网络安全·智能路由器·bgp
和道一文字yyds4 小时前
20天 - TCP 和 UDP 有什么区别?说说 TCP 的三次握手?TCP 是用来解决什么问题?
网络协议·tcp/ip·udp
Chenyu_3104 小时前
05.基于 TCP 的远程计算器:从协议设计到高并发实现
linux·网络·c++·vscode·网络协议·tcp/ip·算法
TSINGSEE6 小时前
嵌入式音视频通话SDK组件EasyRTC:全平台设备兼容,智能硬件里的WebRTC调用实践
网络协议·音视频·webrtc·实时音视频·p2p·智能硬件
添砖Java中9 小时前
RPC服务调用深度解析:从原理到Java实践
java·网络协议·rpc