我一直在尝试设置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后面的机制不起作用。
我必须遗漏一些东西,我要感谢任何人最好的建议,以通用反向代理前端作为'/ ADB'根URI后面的Web应用程序来实现这个arangodb公园。
干杯
我在这里使用这个脚本来实现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);