記錄時間 2020-05-17
版本nextcloud 18.0 onlyoffice 5.5
同一個機器上安裝nextcloud和onlyoffice鏡像棕硫,映射到外網(wǎng)訪問髓涯,無法通過域名配置,提示網(wǎng)絡(luò)連接不通或文件下載失敗饲帅,這個問題網(wǎng)絡(luò)上有很多的提問复凳,但是一直沒找到答案瘤泪,經(jīng)過2天的分析灶泵,終于明白了失敗的具體原因,和我當(dāng)前的組網(wǎng)有關(guān)系对途,下面先畫一個目前組網(wǎng)的示意圖赦邻。另外需要知道這兩設(shè)備有兩個過程要做:1.nextcloud連接onlyoffice 2.onlyoffice到nextcloud拉取文件
第一種情況:配置onlyoffice地址為192.168.x.x
服務(wù)地址配置192.168.x.x,能正常連接也能正常訪問实檀,數(shù)據(jù)不通過外部網(wǎng)絡(luò)惶洲,不過這時候只能局域網(wǎng)自己玩玩,如果從外網(wǎng)的某一主機連入膳犹,會出現(xiàn)加載服務(wù)器錯誤恬吕,因為這時候配置的是192.168.x.x,此時外部發(fā)起的請求须床,onlyoffice還是會去連接192.168.x.x地址铐料。
第二種情況:配置onlyoffice地址外部映射地址115.xxx.xx.xx
在這個情形會出現(xiàn)另一種情況,在局域網(wǎng)內(nèi)我們通過192.168.xx.xx的地址去訪問nextcloud和onlyoffice的服務(wù)都是可以正常的豺旬,但是在內(nèi)網(wǎng)通過115.xxx.xx.xx地址訪問钠惩,直接會找不到服務(wù)器。這里涉及到另一個問題族阅,就是在局域網(wǎng)內(nèi)通過自身公網(wǎng)訪問自己篓跛,路由器在收到這類地址的時候好像是為了安全,丟棄這類數(shù)據(jù)的坦刀,這就導(dǎo)致了如果給nextcloud配置onlyoffice外網(wǎng)地址路由器這關(guān)都過不去愧沟。配置的時候會提示連接失敗,網(wǎng)上很少改host的方法鲤遥,對路由要求太高沐寺,容易弄亂網(wǎng)絡(luò)。
配置外網(wǎng)地址渴频,在外網(wǎng)訪問會出現(xiàn)文件拉取錯誤芽丹。
這問題在當(dāng)前網(wǎng)絡(luò)環(huán)境下難以解決,只想到了兩個辦法
1.在另一臺云主機安裝配置onlyoffice
方案一很簡單卜朗,網(wǎng)絡(luò)示意如下圖
這個情形下很好理解拔第,不過在配置的時候有一個地方需要注意咕村,在外網(wǎng)時沒問題,但如果通過內(nèi)外訪問蚊俺,會出現(xiàn)無法拉取文件的問題懈涛,查看onlyoffice的文件錯誤提示(文件在docker 鏡像內(nèi)部/root/onlyoffice/logs/documentserver/converter/out.log里)
[2020-05-15T19:56:40.301] [ERROR] nodeJS - error downloadFile:url=http://192.168.1.110:18082/apps/onlyoffice/empty?doc=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY3Rpb24iOiJlbXB0eSJ9.IFkknNDAekyomrhunK1KvdH29qv89XNNYE1vfIxvkQk;attempt=1;code:ETIMEDOUT;connect:true;(id=conv_check_1570064549_docx)
也就是說在onlyoffice是根據(jù)訪問過來的地址去生成文件的下載url,如果在外部訪問生成的就是外部訪問的url泳猬,針對這個問題nextcloud的有一個高級配置批钠,可以解決。
Server address for internal requests from the Document Editing Service這個值相當(dāng)于是告訴onlyoffice實際的訪問地址是哪個得封,這樣能保證內(nèi)網(wǎng)外網(wǎng)都可以訪問使用埋心。
2.通過sockt 端口轉(zhuǎn)發(fā)來實現(xiàn)
這個方式實際是繞過了內(nèi)網(wǎng)不能訪問自身公網(wǎng)地址web的問題,在嘗試連接onlyoffice時走到外網(wǎng)忙上,然后轉(zhuǎn)到內(nèi)網(wǎng)的onlyoffice拷呆,onlyoffice通過內(nèi)部網(wǎng)絡(luò)拉取文件。(這里使用了rinetd疫粥,安裝簡單)
這個配置上有一點區(qū)別茬斧,現(xiàn)在的nextcloud和onlyoffice在同個內(nèi)網(wǎng),因此在配置Server address for internal requests from the Document Editing Service時填的是內(nèi)網(wǎng)地址192.168.x.x梗逮,文件通過內(nèi)網(wǎng)拉取项秉,連接走外網(wǎng)。
總結(jié):兩個方法都可以慷彤,問題解決了娄蔼,成本增加了,本人目前使用方法2瞬欧。
補充:經(jīng)過研究贷屎,有了第三種解決方案
通過在NAS內(nèi)建立dns服務(wù)器,來做域名欺騙艘虎,是內(nèi)網(wǎng)機器在使用外網(wǎng)域名訪問時候直接翻譯成內(nèi)網(wǎng)地址唉侄,網(wǎng)絡(luò)邏輯如下
具體的做法:
1.現(xiàn)在nas里安裝dns server,如果是其他系統(tǒng)可以使用類似的軟件野建,我用的是群暉所以直接安裝了属划。
2.配置dns server,增加一條master區(qū)域的域名候生,因為用的是ddns.net的域名同眯,加這么一條。
3.配置一個A類解析唯鸭,將我真正使用的域名解析為nas的地址须蜗,這樣如果在內(nèi)網(wǎng)使用域名訪問就會解析為12.168.1.110
4.啟動解析服務(wù),不需要解析的還是都送網(wǎng)關(guān)解析
5.為nextcloud和onlyoffice配置dns域名,指向192.168.1.110.
第一次修改的時候通過登錄到docker里面修改/ect/ resolv.conf 里的地址來做明肮,每次一重啟就丟失菱农,然后網(wǎng)上說的其他固定resolv的方法在docker鏡像里指令都沒有。后來經(jīng)過研究發(fā)現(xiàn)docker里的這個值是直接映射宿主機的柿估,所以直接在宿主機上加了一條dns規(guī)則循未。
重啟后docke就能按110的地址先進行域名解析。
6.重新配置參數(shù)秫舌,按如下配置就可以的妖。