arangodb 3.1背后的apache 2.4反向代理?

问题描述 投票:0回答:1

我一直在尝试设置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公园。

干杯

reverse-proxy arangodb
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.