nginx作为反向代理服务器:代理MySQL、Postgresql、Redis及多个TCP服务

news/2024/10/18 10:54:59/

https://www.cnblogs.com/echohye/p/18289809

使用 Nginx 作为反向代理服务器,可以代理 MySQL、PostgreSQL、Redis 及多个 TCP 服务。这需要配置 Nginx 的 stream 模块。

以下是详细的配置步骤:

1. 确保 Nginx 支持 stream 模块

首先,确保 Nginx 已经编译并支持 stream 模块。运行以下命令检查:

nginx -V

在输出中查找 --with-stream--with-stream_ssl_module。如果没有,需要重新编译或安装支持 stream 模块的 Nginx 版本。

2. 配置 Nginx 以代理多个 TCP 服务

编辑 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf),添加 stream 块配置:

示例配置
stream {# MySQL 代理配置upstream mysql_upstream {server 127.0.0.1:3306;  # 替换为你的 MySQL 服务器地址和端口}server {listen 3306;  # 代理监听的端口,可以与 MySQL 的端口相同或不同proxy_pass mysql_upstream;}# PostgreSQL 代理配置upstream postgres_upstream {server 127.0.0.1:5432;  # 替换为你的 PostgreSQL 服务器地址和端口}server {listen 5432;  # 代理监听的端口,可以与 PostgreSQL 的端口相同或不同proxy_pass postgres_upstream;}# Redis 代理配置upstream redis_upstream {server 127.0.0.1:6379;  # 替换为你的 Redis 服务器地址和端口}server {listen 6379;  # 代理监听的端口,可以与 Redis 的端口相同或不同proxy_pass redis_upstream;}# 其他 TCP 服务代理配置upstream custom_tcp_upstream {server 127.0.0.1:12345;  # 替换为你的自定义 TCP 服务地址和端口}server {listen 12345;  # 代理监听的端口,可以与自定义 TCP 服务的端口相同或不同proxy_pass custom_tcp_upstream;}
}

3. 测试和应用配置

在应用新的配置之前,测试 Nginx 配置文件的语法:

sudo nginx -t

如果配置正确,重启 Nginx 使新的配置生效:

sudo systemctl restart nginx

4. 验证代理连接

使用相应的客户端工具连接到 Nginx 代理的端口,以验证代理是否工作正常。

验证 MySQL 代理
mysql -h your_nginx_server_ip -P 3306 -u your_mysql_user -p
验证 PostgreSQL 代理
psql -h your_nginx_server_ip -p 5432 -U your_postgres_user -d your_database
验证 Redis 代理
redis-cli -h your_nginx_server_ip -p 6379
验证自定义 TCP 服务代理

根据自定义 TCP 服务使用相应的客户端工具连接到 Nginx 代理的端口。


http://www.ppmy.cn/news/1538915.html

相关文章

Go相关工具

本篇内容是根据2019年6月份#90 Go tooling音频录制内容的整理与翻译 这一期谈论我们每天使用的工具来帮助提高工作效率!这对于那些刚接触 Go 工具的人来说是一个很好的介绍,并围绕我们使用其中一些工具多年后对它们的看法进行了一些讨论。 过程中为符合中…

JavaWeb(Servlet编程)第三章

一,常用页面跳转方法1:重定向 通过HttpServletResponse的sendRedirect()方法来跳转到本地URL void sendRedirect(String locationURL) locationURL形式:URL[?参数名称1参数值1&参数名称2参数值2&…] 只能传递字符串,不…

HTB:Base[WriteUP]

目录 连接至HTB服务器并启动靶机 1.Which two TCP ports are open on the remote host? 2.What is the relative path on the webserver for the login page? 3.How many files are present in the /login directory? 4.What is the file extension of a swap file? …

charAt,chartCodeAt,codePointAt,fromCodePoint,fromCharCode

生僻字的length算2,有些空格是特殊空格,比如\u3000 u3000不是全角空格,u3000是表意字空格(Ideographic Space),宽度和一个表意字(汉字)相同。它应当被当做汉字来处理。比如,在一些排版中&#x…

SpringBoot高校学科竞赛平台:性能优化与实践

3系统分析 3.1可行性分析 通过对本高校学科竞赛平台实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本高校学科竞赛平台采用SSM框架,JAVA作为开发语…

大模型百科:超详细解读与学习路线图

大模型的定义 大模型是指具有数千万甚至数亿参数的深度学习模型。近年来,随着计算机技术和大数据的快速发展,深度学习在各个领域取得了显著的成果,如自然语言处理,图片生成,工业数字化等。为了提高模型的性能&#xf…

RandLA-Net 基于 Tensorflow , 训练自定义数据集

搭建 RandLA-Net 训练环境, 生成自定义训练数据集, 训练自定义数据集. Code: https://github.com/QingyongHu/RandLA-Net 搭建训练环境 Clone the repositorygit clone --depth=1 https://github.com/QingyongHu

Mac 安装 Telnet 工具

方案一 通过 brew install telnet 时会要求安装 xcode 安装命令 brew install telnet报错信息: Warning: No remote origin in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-services, skipping update! Running brew update --auto-update... > Auto-…