在Apache 2.4反向代理之后是arangodb 3.1吗?

时间:2018-08-07 06:52:42

标签: reverse-proxy arangodb

我一直在尝试设置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应用程序。

欢呼

1 个答案:

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