我正在尝试将neo4j数据库暴露给互联网.
出于安全考虑,我想通过nginx将其隐藏在SSL / basic_auth组合后面.这是相应的nginx配置:
location /neo4j/ {
proxy_pass https://localhost:7473/;
proxy_read_timeout 600;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X_FORWARDED_PROTO https;
proxy_set_header Host $http_host;
proxy_buffering off;
proxy_redirect off;
auth_basic "restricted";
auth_basic_user_file /etc/nginx/auth/htpasswd;
proxy_headers_hash_max_size 1024;
proxy_headers_hash_bucket_size 128;
proxy_ssl_session_reuse off;
rewrite /neo4j/(.*) /$1 break;
}
虽然我能够访问https://example.com/neo4j/browser,但网络界面告诉我,它无法连接到neo4j,我的webbrowser控制台充满了选项https://example.com/db/data 405(不允许)
我还尝试了内置在https服务器中的neo4j以及身份验证扩展(https://github.com/neo4j-contrib/authentication-extension).
使用此选项,我还可以访问Web界面.
但界面还显示,并且webbrowser的控制台充满了OPTIONS http://example.com:7473/db/data/net :: ERR_EMPTY_RESPONSE和提示页面位于’https ://example.com:7473 / browser /’通过HTTPS加载,但显示来自“http://example.com:7473/db/data/”的不安全内容:此内容也应通过HTTPS加载.
有谁知道,如何让它工作?提前谢谢了!
我遇到了同样的问题,有点奇怪的是缺乏关于Nginx作为网络服务器和neo4j的信息.奇怪的是,官方文档中对反向代理的唯一引用是Apache – 没有留下深刻的印象.
仅供参考我默认使用dockerised neo4j(https://github.com/neo4j/docker-neo4j/tree/master/2.3.2)(如果你想知道其他设置).如果你在docker之外本地运行neo4j应该没关系.以下Nginx conf将是相同的.
location /neo4j/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_buffering off;
proxy_pass http://YOUR-IP:7474/browser/;
}
location /db/data/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_buffering off;
proxy_pass http://YOUR-IP:7474/db/data/;
}
如果您使用HTTPS而不是HTTP,请用您的IP替换YOUR-IP并将7474更改为7473.
这对我有用.