如何配置Redis-Insight环境变量以连接Redis容器并通过ngrok访问
我在OpenStack实例中使用Terraform编写.tf文件,在私有Docker网络中创建了Redis和Redis-Insight容器,但通过ngrok隧道访问Redis-Insight时出现错误。尝试调整RITRUSTEDORIGINS=http://localhost:4040但未解决问题,请问Redis-Insight应配置哪些环境变量?
当前Terraform代码如下:
terraform { required_providers { docker = { source = "kreuzwerker/docker" version = "2.23.1" } } } provider "docker" {}
resource "docker_network" "redis_network" { name = "redis_network" }
resource "docker_image" "redis" { name = "redis:latest" keep_locally = false } resource "docker_container" "redis" { image = docker_image.redis.image_id name = "redis" ports { internal = 6379 external = 6379 } network_mode = docker_network.redis_network.name }
resource "docker_image" "redis-insight" { name = "redislabs/redisinsight:latest" keep_locally = false } resource "docker_container" "redis-insight" { image = docker_image.redis-insight.image_id name = "redis-insight" ports { internal = 8001 external = 8001 } network_mode = docker_network.redis_network.name depends_on = [docker_container.redis] env = [ "REDIS_URL=redis://redis:6379", "REDIS_PASSWORD=password", # "REDIS_DATABASE=1", # "REDIS_TLS=true", # "INSIGHT_DEBUG=true", # "RIPORT=8001", # "RIPROXYENABLE=t", "RITRUSTEDORIGINS=http://localhost:4040" ] }
关键环境变量配置
RITRUSTEDORIGINS:必须指定ngrok分配的实际公共域名(例如https://abc123.ngrok.io),而非localhost:4040——因为ngrok请求的来源是它的公共域名,不是本地代理端口。如需同时支持本地访问和ngrok访问,用逗号分隔多个值:"RITRUSTEDORIGINS=http://localhost:8001,https://abc123.ngrok.io"RIPROXYENABLE:必须设置为t以开启代理支持,Redis-Insight需要识别ngrok作为反向代理传递的请求头,取消代码中该变量的注释即可。RIBASEPATH(可选):如果使用ngrok的子路径访问Redis-Insight,需设置该变量指定子路径,例如"RIBASEPATH=/redis-insight";直接使用ngrok根域名访问则无需配置。
额外配置修正建议
Redis密码一致性:当前Redis容器未设置密码,但Redis-Insight配置了
REDIS_PASSWORD=password,需给Redis容器添加密码配置,保持两者一致:resource "docker_container" "redis" { image = docker_image.redis.image_id name = "redis" ports { internal = 6379 external = 6379 } network_mode = docker_network.redis_network.name env = [ "REDIS_PASSWORD=password" # 新增密码配置 ] }开启调试日志:取消
INSIGHT_DEBUG=true的注释,查看Redis-Insight容器日志,可排查请求拦截、Redis连接失败等具体问题。端口与安全组检查:确保OpenStack实例安全组开放了8001端口,ngrok转发的是宿主机的8001端口。
修改后的Redis-Insight容器示例
resource "docker_container" "redis-insight" { image = docker_image.redis-insight.image_id name = "redis-insight" ports { internal = 8001 external = 8001 } network_mode = docker_network.redis_network.name depends_on = [docker_container.redis] env = [ "REDIS_URL=redis://redis:6379", "REDIS_PASSWORD=password", "INSIGHT_DEBUG=true", "RIPROXYENABLE=t", "RITRUSTEDORIGINS=https://abc123.ngrok.io,http://localhost:8001" # 替换为你的ngrok域名 ] }
内容的提问来源于stack exchange,提问作者Dren Sokoli

