为什么dify在本机可以正常访问,局域网通过ip访问却只看到欢迎使用nginx的提示,如果访问服务器ip/apps则直接提示404 Not Found。这是怎么回事该如何解决呢?文章中将一步步解决这些问题。
前言
之前在服务器部署了dify,也在服务器的浏览器配置了dify,发现它可以发布一个聊天机器人,是通过http访问的。注意到这个聊天机器人在服务器本机可以访问,但在局域网内别的设备上却不能访问,提示404 Not Found之类的东西。然后又注意到,服务器本机ip就是dify页面,本机ip/app则是dify面板。但是局域网别的设备访问服务器ip,只看到欢迎使用nginx的提示,如果访问服务器ip/apps则直接提示404 Not Found。
对于上述问题,我在百度查询了一圈都没结果,因为大多数人就是直接在部署dify的机子上访问的。当然我知道有人配置了nginx,使得局域网访问dify不会显示nginx默认页面,而是正确跳转到dify,可惜我没找到这种教程,自己暂时也不会。关于这个我在配置iis的webdav时遇到过,我修改了一下iis默认网页,访问对应地址就会显示修改过的网页,但是加入后最就可以访问文件目录,或许nginx有类似的功能?暂不研究这个,我会用别的方法解决。
我在查询dify注意到,nginx端口是可以修改的,它的配置就在之前部署时复制的.env文件中(大概是靠近末尾),默认就是80和443。
尝试修改端口
nginx端口采用80和443,好处是访问http或https时可以不用手动加端口,坏处是可能会和其他服务冲突,导致nginx不能启动等等。这里有个问题,如果我在本机访问本机ip,其实就是在访问本机ip:80,然后正确跳转到dify了,但在局域网设备上访问服务器ip:80却仍然停留在nginx欢迎页。如果我将80改成别的页面,是否在别的设备访问服务器ip:别的端口,就正常了呢?我带着疑问试了试。
起初我是随意改的,80和443分别改成86和446,但是发现没有用,无法启动nginx。于是我想到了很多人习惯于将80和443改为8080和8443,我也这么改,然后重启nginx,居然成功了。
# defalut nginx port
EXPOSE_NGINX_PORT=80
EXPOSE_NGINX_SSL_PORT=443
所以nginx的端口我改成了这个:
EXPOSE_NGINX_PORT=8080
EXPOSE_NGINX_SSL_PORT=8443
问题解决
然后我在局域网其他电脑上访问服务器IP:8080,果然出现了dify的logo!!注意到服务器硬盘在满载,于是我等了一会,它自动跳转到了dify的install界面,接着自动跳到了signin页面,登陆后就是apps页面,也就是服务器IP:8080/apps页面,是dify的面板,到此一切正常。
然后我试了试其他页面,需要等加载(似乎dify会为不同的访问设备准备内容),加载后所有页面和功能都正常了。我访问之前创建的聊天助手,发现直接访问是404,于是我在地址中服务器IP后加上8080端口,果然聊天助手也能局域网访问了,并且可以和在服务器上一样调用知识库,完美!
到此问题解决,总结一下,解决局域网其他设备不能访问dify的最佳办法就是修改nginx端口,理论上不是默认的都行。
思考
关于端口的说明,我之前一直好奇电脑的端口可以设置成哪些值,比如为什么8443可以而446不可以。我在百度的dpsk中问了一下,算是了解了,25535以内都可以设置为端口,其中1024以内是计算机专用的,不建议从这里面选端口。所以可以从1024到25535范围内自选端口。