FILE_SERVER_ROOT如何配置才能双网卡访问

您好:
我都是在web管理员页面配置的,我用的自带服务器,没使用apache和nginx
因为我A机器是双网卡,有192.168.5.10和192.168.6.13两个网段,我想让两个网段的用户,都能访问seafile,
所以我配置如下:
SERVICE_URL:http://localhost:8000
FILE_SERVER_ROOT:http://localhost:8082

但实际测试发现,只有SERVICE_URL:http://localhost:8000正常,就是说两个网段打开网页操作是正常的,但无法上传和下载。
如果FILE_SERVER_ROOT:http://192.168.5.10:8082配置成这样,则192.168.5.*段的用户可以上传和下载,
如果FILE_SERVER_ROOT:http://192.168.6.13:8082配置成这样,则192.168.6.*段的用户可以上传和下载.
请问如何配置,才能让我两个网段的用户都能正常上传和下载啊??我是局域网使用,不想用域名那么复杂的东西啊,谢谢了

看了下代码,就是在上传时候会去找配置文件中的网址(域名),这个难道就不能改成从SERVICE_URL取么,SERVICE_URL的值都能取到。我就是想也用SERVICE_URL:http://localhost:8000的地址啊。。。

依鄙人愚见,是不可能的。

常规的服务器程序都不需要在客户端设置 IP 的,除了一次性地指定,比如在浏览器地址栏一次性输入 IP,页面内所有子链就相对此 IP 去拼接(此处请不要跟我钻牛角尖拌嘴)。

Seafile 若按此常规做法,则不需要从客户端(Web 也是一种特殊的客户端)来配置 SERVICE_URL 和 FILE_SERVER_ROOT,如此一来你的两个网段都是可用的。

我一直想不明白 Seafile 为什么要这样做……

不过也许你可以尝试一个馊主意:
把这两个 URL 的 IP 配置成 192.168.5.10,然后在 192.168.6.* 网段的主机上修改 hosts 文件,把对 192.168.5.10 的访问转变成 192.168.6.13。
我认为这确实是个馊主意,且只是理论推断,我并未尝试过,仅供参考!

非常非常感谢您百忙中的回复,其实我不是想拌嘴,我就是没太明白您写的。。。
还望指点下我的理解,web就是客户端我理解。但我不太理解您说的在客户端设置IP,其实我认为seafile和其他常规服务器一样,没有在客户端设置ip。因为我理解的web服务器程序的ip仅仅是代表服务器的所在处。而不是客户端的IP.我理解的seafile流程应该是客户端首先访问前台页面(由SERVICE_URL:http://localhost:8000决定),然后在点击上传或者下载时,相当于在服务器内部去访问的FILE_SERVER_ROOT网址(我通过客户端调试证明的该结论,并且是纯FILE_SERVER_ROOT字段拼接的,对localhost字段都没有进行替换),所以我认为在源码中作者能否留个选项,当点击上传和下载时,也使用SERVICE_URL得到的网址。

另外,不可能给每台机器修改hosts文件,虽然能规避该问题,但确实不是一个好方法,如果这样。都不如我自己一点点学习seafile源码,将触发上传和下载时,访问的地址,修改为SERVICE_URL获取到地址了。但我python实在是太烂了。所以还是希望作者帮忙解决下。

写的有点乱。。。抱歉。。。还是非常感谢您的回复。。。我的主旨就是,我认为任何程序都是不需要在客户端设置IP的(包括seafile),这个ip仅仅就是为了找到服务器而已。而不是代表将该IP给到客户端了。。。
好像有点拌嘴了。。抱歉。。感谢您

我认为他分成两个网址,可能是想将服务端和文件保存在不同的机器,也许是分布在云端。如果是这样的话,采用两个配置项,就太方便了。

这一层我也想过,这样也许能把 seahub 和 seafile 分离在不同服务器。但不知道有什么意义
如果说这样可以在一个服务器A的seahub传到另一个服务器B的seafile,那终端用户为什么不干脆用服务器B的seahub呢?
再说,服务器 A 的 seahub 能不能与服务器 B 的 seafile 通信,没听说有人尝试过

我能看懂你的表达,而且我说的也正是和你一样的意思。
谢谢你的指正,我说“从客户端配置”确实欠妥了。是管理员从web端登录去设置,那么这个应该称为“服务器端的配置”。
我指的就是,当我们能过 http://a.b.c.d:8000 登录时,上传模块的代码完全可以把文件传向 http://a.b.c.d:8082 ,我不懂为什么要我们手动去设置这两个 URL。
总之我的意思和你的一样。
我也想改源码,但是编译好了,安装好了,运行就不好了,还没进一步走下去

对头,就是这个意思。。但我个人感觉服务器A的seahub,服务器B的seafile完全可以通信,只要两个服务器都配置外网权限了。这应该是一个很基本的功能。比方说服务器A的硬盘非常小,我们就可以通过服务器B不断的扩大硬盘存储容量,我感觉作者的想法没有问题。只要再给我们开放一个选项就好了。。就是seahub跳转到seafile时候,允许使用seahub的网址就没有任何问题了。。。哈哈。。我python真的太烂了。。我是抓包发现,就是拼凑上的seafile的网址。。这个只要取下seahub应该就解决了。。。希望还是作者能增加一个选项吧。。支持从seahub取seafile的网址。。就完美了

“当我们能过 http://a.b.c.d:8000 登录时,上传模块的代码完全可以把文件传向 http://a.b.c.d:8082 ,我不懂为什么要我们手动去设置这两个 URL。“你说的这句太对了。。点击上传按钮后,我抓的包,发现,你在web端配置的FILE_SERVER_ROOT的属性值,写什么样,作者就直接拼凑成什么样,而我们的想法是通过localhost获取到当前服务器的真实ip。。。我抓包结果就是,例如FILE_SERVER_ROOT=http:abc.def:8082,点击上传时,跳的网址就是http:abc.def:8082/upload/…完全就是硬拼的。。唉

等你改好了告诉我,哈哈

貌似是没人管我提的这个问题了。。好尴噶。这个不是官方论坛么?

这是“官方论坛”,官方“提供”的论坛,不是官方“服务”的论坛。QQ群也一样呀。
这里好像偶尔会有官方人出没

不懂。。。。呵呵。。。你还不如告诉我哪里能找到服务的地方得了。。。去git提交issue么?

两个网段用DNS么,会用不同的DNS么? 如果用不同的DNS,可以在不同网段解析到对应的IP上,然后改用域名配置。

当然最笨的方式是改本机hosts文件的解析,但是用户端多了,不是好办法。

说半天,你又说回原点了。没有域名啊。。。那个最笨方法,咱就放弃吧。。。。。

或者考虑在192.168.5网段出口和192.168.6.13做互通,这样大家都用192.168.6.13访问就行了。

当然两个网段反过来也行。

不可能的,既然两个网段,按照您说的,那我都放一个网段不就得了。。必须是隔离开的两个网段