我一直在尝试设置apache反向代理以与arangodb 3.1.19一起使用
我知道生命的尽头,但是...
我可以使其工作如下:
https://docs.arangodb.com/2.8/cookbook/MakingFoxxAppAccessible.html
ProxyPass /arangodb/ http://127.0.0.1:8529/
ProxyPassReverse /arangodb/ http://127.0.0.1:8529/
ProxyPass /_db/ http://127.0.0.1:8529/_db/
ProxyPassReverse /_db/ http://127.0.0.1:8529/_db/
ProxyPass /_api/ http://127.0.0.1:8529/_api/
ProxyPassReverse /_api/ http://127.0.0.1:8529/_api/
我还在发行说明中找到了3.x中的新功能
https://docs.arangodb.com/3.1/Manual/ReleaseNotes/NewFeatures30.html
有关在反向代理后面“挂载” arangodb的方法的参考,
对我来说,这听起来很像我在寻找什么,那就是共享apache反向代理的单个实例,以对各种服务(例如Kibana(/ KB / ),ArangoDB(/ ADB / ),....
我可以使Kibana正常运行,但是对于ArangoDB,我不确定要做什么。
这是我在http.conf中所做的事情:
<Location "/ADB/">
Header set 'X-Script-Name' /ADB
ProxyPreserveHost On
ProxyPath http://127.0.0.1:8529/
proxyPassReverse http://127.0.0.1:8529/
</Location>
同时,我尝试在arangod.conf中添加从arangodb信任代理的选项
[server]
frontend.proxy-request-check = true
frontend.trusted-proxy = proxy_hostname.my_domain
当我执行上述所有操作时,直接访问ArangoDB前端就像是魅力,但是访问URL:proxy_hostname.my_domain:8443 / ADB / _db / MyDB / _admin / aardvark / index.html时,它将失败,并显示错误面板:
“与服务器的连接已丢失。服务器处于 重负载...请尝试在X秒内重新连接“
浏览器检查器mod,显示对URL proxy_hostname.my_domain:8443 / ADB / _db / MyDB / ....的代理请求导致诸如URL proxy_hostname.my_domain:8443 / _db / POC / 的网络请求api / collection? = xxxxxxx
因此,似乎将整个ArangoDB前端驻留在'/ ADB'basePath之后的机制不起作用。
我必须丢失一些东西,对于任何人的最佳建议,我都非常感激能够在通用逆向代理前端后面实现此arangodb公园,使其成为“ / ADB”根URI背后的Web应用程序。
欢呼
答案 0 :(得分:0)
我在这里使用此脚本来实现对ArangoDB的代理(尽管它非常基础),它不是Apache,而是在NodeJS中
我不需要弄混arangod.conf,它可以与ArangoDB(E)3.3.3一起使用,希望对您有用。
var net = require('net');
var LOCAL_PORT = 6512;
var REMOTE_PORT = <ARANGODB PORT HERE>;
var REMOTE_ADDR = <ARANGODB HOST HERE>;
var server = net.createServer(function (socket) {
socket.on('data', function (msg) {
console.log(' ** START **');
console.log('<< From client to proxy ', msg.toString());
var serviceSocket = new net.Socket();
serviceSocket.connect(parseInt(REMOTE_PORT), REMOTE_ADDR, function () {
console.log('>> From proxy to remote', msg.toString());
serviceSocket.write(msg);
});
serviceSocket.on("data", function (data) {
console.log('<< From remote to proxy', data.toString());
socket.write(data);
console.log('>> From proxy to client', data.toString());
});
});
});
server.listen(LOCAL_PORT);
console.log("TCP server accepting connection on port: " + LOCAL_PORT);