首页 文章

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

提问于
浏览
0

我一直在尝试设置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后面的网络应用程序 .

干杯

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);
    

相关问题