You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过域名访问Redis服务器 有无适配PostgreSQL等数据库的通用方案

术语说明

你需要的技术是四层(传输层)反向代理,用于原生TCP/UDP协议的流量转发,不解析应用层内容,可通用适配Redis、PostgreSQL等所有基于TCP协议的服务。如果仅需要域名映射服务IP、不需要端口转换/高可用/负载均衡能力,直接配置DNS A记录解析即可实现需求。


Nginx 适用性说明

你此前配置失败是因为用错了模块:redis2模块是七层HTTP协议转Redis协议的适配组件,用于支持HTTP请求操作Redis,无法实现原生Redis TCP协议的透明转发。
Nginx本身完全支持你的需求,需要启用stream模块(默认编译未开启,可执行nginx -V查看编译参数中是否携带--with-stream确认,无该参数需要重新编译Nginx添加)。


通用解决方案(同时适配Redis、PostgreSQL)

以下两种方案都支持直接使用域名访问,无需手动填写端口:

方案1:Nginx Stream 四层代理

在nginx.conf主配置文件中,和原有http块平级的位置新增如下stream配置块:

stream {
    # Redis 代理配置,监听默认6379端口
    server {
        listen 6379;
        proxy_pass 实际Redis服务内网地址:6379;
        # 长连接保活配置
        proxy_timeout 300s;
        proxy_connect_timeout 10s;
    }

    # PostgreSQL 代理配置,监听默认5432端口
    server {
        listen 5432;
        proxy_pass 实际PostgreSQL服务内网地址:5432;
    }
}

配置完成后执行nginx -s reload重载配置,将redis.example.org、postgresql.example.org等域名解析到Nginx代理服务器的公网IP即可直接使用。

方案2:HAProxy 四层代理(更适合高并发、多节点负载场景)

HAProxy默认原生支持四层代理,对数据库长连接的适配性更好,编辑haproxy.cfg添加如下配置:

# Redis 代理配置
frontend redis_front
    bind *:6379
    default_backend redis_back

backend redis_back
    server redis_node 实际Redis服务地址:6379 check inter 3000 rise 2 fall 3

# PostgreSQL 代理配置
frontend pg_front
    bind *:5432
    default_backend pg_back

backend pg_back
    server pg_node 实际PostgreSQL服务地址:5432 check inter 3000 rise 2 fall 3

配置完成后重启HAProxy服务,将域名解析到HAProxy服务器公网IP即可使用。


特殊场景简化方案

如果所有服务都部署在同一台公网服务器,不需要做流量转发、高可用能力,无需部署代理服务:直接将对应域名的DNS A记录指向该服务器公网IP,开放服务器公网的6379、5432端口,即可直接用域名访问服务。


安全提示

数据库类服务直接开放公网访问必须开启强密码验证,建议额外配置IP白名单限制访问来源,避免数据泄露。

内容的提问来源于stack exchange,提问作者typicallearner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 12:21:03