arangodb 3.1落后于apache 2.4反向代理?

yk9xbfzb  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(113)

我一直在尝试设置Apache反向代理来与一个Arangodb3.1.19一起工作
我知道这是生命的尽头,但是...
我可以让它工作如下:
https://github.com/arangodb/docs/blob/00e2f46e2ff71aadb750fa1033c65fcd769bef61/2.8/cookbook/making-foxx-app-accessible.md

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.11/release-notes/version-3.0/whats-new-in-3-0/
用于在反向代理之后“安装”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秒内尝试重新连接”
浏览器检查器模块,显示代理请求URL proxy_hostname.my_domain:8443/ADB/_db/MyDB/....会导致类似URL proxy_hostname.my_domain:8443/_db/POC/API/collection的网络请求?=xxxxxxx
因此,将整个ArangoDB前端放置在'/ADB' basePath后面的机制似乎不起作用。
我一定是错过了什么,我会感谢任何人的最佳建议,以实现这个arangodb公园背后的通用反向代理前端作为一个web应用程序背后的'/ADB'根URI。
欢呼

3zwjbxry

3zwjbxry1#

我在这里使用这个脚本来实现到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);

相关问题