Jir*_*vra 5 reverse-proxy nginx docker hashicorp-vault
我需要将 nginx 配置为 docker 中运行的某些应用程序的反向代理。Portainer 运行良好,但 HashiCorp Vault 仍然存在问题。进一步的步骤将使用 nginx 为所有正在运行的应用程序进行 SSL 连接。所有应用程序都是最简单的设置,我可以在没有任何特殊功能的情况下使用。
用户 nginx;
工作进程 1;
error_log /var/log/nginx/error.log 调试;
pid /var/run/nginx.pid;
事件{
工人连接1024;
}
http{
包括/etc/nginx/mime.types;
default_type 应用程序/八位字节流;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent“$http_referer”'
'“$http_user_agent”“$http_x_forwarded_for”';
access_log /var/log/nginx/access.log main;
发送文件;
#tcp_nopush 上;
keepalive_timeout 65;
#gzip 开启;
服务器 {
听80;
服务器名称 1.2.3.4;
位置/porttainer/ {
proxy_pass http://1.2.3.4:9000/;
重写 ^/portainer(/.*) $1 中断;
proxy_redirect 关闭;
proxy_set_header 主机 $host;
proxy_set_header X-真实IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
位置/金库/ {
proxy_pass http://1.2.3.4:8200/;
重写 ^/vault(/.*) $1 中断;
proxy_redirect 关闭;
proxy_set_header 主机 $host;
proxy_set_header X-真实IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
#include /etc/nginx/conf.d/*.conf;
}
/var/lib/docker/volumes/vault_vault_config/_data/vault.json
{
“后端”:{
“文件”: {
“路径”:“/库/文件”
}
},
“听众”:{
“TCP”:{
“地址”:“0.0.0.0:8200”,
“tls_disable”:1
}
},
“ui”:正确,
“disable_mlock”:真,
“disable_clustering”:true
}
注意:在 docker 中运行需要“disable_mlock”,“disable_clustering”应该可以解决我的问题,但它没有按预期工作。
/var/lib/docker/apps/vault-stack.yml
版本:'3.2'
服务:
保险库:
图片:金库
部署:
副本:1
端口:
- 8200:8200
环境:
- VAULT_ADDR=http://127.0.0.1:8200
卷:
-vault_config:/vault/config
-vault_logs:/vault/logs
- 保管库文件:/保管库/文件
入口点:vault 服务器-config=/vault/config/vault.json
卷:
保险库配置:
司机:本地
保险库文件:
司机:本地
保险库日志:
司机:本地
Portainer 运行良好,但使用 Vault 时我仍然遇到 404 错误的问题。当我访问http://1.2.3.4/vault时,我被重定向到http://1.2.3.4/ui,这显然不存在。据我发现,这是因为“307 临时重定向”,这是 /var/log/nginx/error.log 的一些输出
2019/11/12 14:06:41 [调试] 13564#13564: *8 使用配置“/vault/”
2019/11/12 14:06:41 [调试] 13564#13564: *8 HTTP/1.1 301 永久移动
位置:http://1.2.3.4/vault/
2019/11/12 14:06:41 [通知] 13564#13564: *8 "^/vault(/.*)" 匹配 "/vault/",客户端:10.20.30.40,服务器:1.2.3.4,请求: “GET /vault/ HTTP/1.1”,主机:“1.2.3.4”
2019/11/12 14:06:41 [通知] 13564#13564: *8 重写数据: "/", args: "", 客户端: 10.20.30.40, 服务器: 1.2.3.4, 请求: "GET /vault/ HTTP/1.1”,主机:“1.2.3.4”
2019/11/12 14:06:41 [调试] 13564#13564: *8 HTTP/1.1 307 临时重定向
位置:/ui/
2019/11/12 14:06:41 [错误] 13564#13564: *8 找不到“/etc/nginx/html/ui/index.html”(2:没有这样的文件或目录),客户端:10.20。 30.40,服务器:1.2.3.4,请求:“GET /ui/ HTTP/1.1”,主机:“1.2.3.4”
几乎所有的事情:)已经花了太多的时间来完成这项工作,这就是我来这里的原因。当我尝试捕获重定向并将其放在那里时,我遇到了许多不同的错误,从 500 Internal 到“太多重定向”。尝试通过禁用集群来解决vault中“服务器”端的问题(如vault.json中所示)
我试图实现同样的目标。这是我让它工作的唯一方法......
location /vault/ {
proxy_pass http://vault:8200/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Accept-Encoding ""; # needed for sub_filter to work with gzip enabled (/sf/answers/2539198161/)
proxy_redirect /ui/ /vault/ui/;
sub_filter '<head>' '<head><base href="/vault/">';
sub_filter '"/ui/' '"ui/';
sub_filter_once off;
}
location /v1 {
proxy_pass http://vault:8200;
}
Run Code Online (Sandbox Code Playgroud)
解决方案主要取自https://github.com/Folcky/hashicorp-vault-and-nginx/blob/master/vault.location
恕我直言,一个更干净的解决方案是使用子域,以便vault.mycompany.com能够独占使用根上下文。
| 归档时间: |
|
| 查看次数: |
3023 次 |
| 最近记录: |