【问题总结】基于docker-compose实现nginx转发redis

目录:

文章目录

    • 需求简介:
      • [Q1: nginx的http模块和http模块有什么不同](#Q1: nginx的http模块和http模块有什么不同)
      • [Q2: 可以都使用stream模块进行配置吗](#Q2: 可以都使用stream模块进行配置吗)
    • Docker环境下如何转发
      • [1 修改docker-compose](#1 修改docker-compose)
      • [2 修改nginx.conf](#2 修改nginx.conf)
      • [3 测试连接](#3 测试连接)

需求简介:

需要在192.168.3.11的ngnix上,转发192.168.3.10:16379端口的redis

原生nginx配置如下即可实现:

复制代码
stream {
    server {
        listen 16379;
        proxy_pass 192.168.3.10:16379;
    }
}

在配置nginx的stream块时候,需要了解前置的知识------

Q1: nginx的http模块和http模块有什么不同

nginx有两个主要模块:http模块和stream模块。

  • http模块用于处理HTTP流量,包括HTTP请求和响应。它支持代理、负载均衡、缓存、SSL和访问控制等功能。

  • stream模块用于处理非HTTP流量,例如TCP和UDP流量。它支持TCP和UDP代理,以及SSL和SNI(服务器名称指示)等功能。

因此,http模块和stream模块主要用于不同类型的流量处理。

(显然这里我们需要的像数据库,redis等都是非HTTP请求)

Q2: 可以都使用stream模块进行配置吗

不可以。虽然HTTP请求本质上是TCP流量,HTTP使用TCP作为其传输层协议 。stream模块只能用于处理非HTTP流量,例如TCP和UDP流量。如果您需要处理HTTP流量,您需要使用http模块。因此,您需要根据您的应用程序的类型和需求选择适当的模块进行配置

Docker环境下如何转发

现在实际都是用docker(compose)部署,所以这里就记录一下docker部署的nginx该如何配置。

1 修改docker-compose

docker是支持多开端口的,使用以下格式指定多个端口:

复制代码
ports:
  - "80:80"
  - "443:443"

此示例将容器的80和443端口映射到主机的80和443端口。您可以根据需要添加或删除此列表中的端口。

那么实际修改后的docker-compose如下:

2 修改nginx.conf

这里涉及到前面提到的stream块的配置。之前自己踩过坑,错将stream块配在http块内,导致失败。

正确的配置位置如下:

3 测试连接

使用redis-cli或者rdm连接测试。

提示连接成功,即可

相关推荐
麦麦麦造3 小时前
小小 Postgres,何以替代 Redis、MongoDB 甚至 ES?
redis·mongodb·elasticsearch·postgresql
伊成7 小时前
细说Docker命令
docker·容器·eureka
小池先生8 小时前
服务请求出现偶发超时问题,经查服务本身没问题,问题出现在nginx转发。
运维·服务器·nginx
java_logo8 小时前
vllm-openai Docker 部署手册
运维·人工智能·docker·ai·容器
jiyuzzz9 小时前
Docker部署WordPress及相关配置
运维·docker·容器
Micro麦可乐9 小时前
Centos Stream 9 中Docker安装出现 download.docker.com:443 的问题解决
linux·docker·centos·podman
LeeZhao@9 小时前
【具身智能】具身机器人VLA算法入门及实战(一):具身智能系统及VLA
人工智能·docker·语言模型·机器人
m0_7197592210 小时前
Docker 常用命令
docker
Jabes.yang11 小时前
Java求职面试: 互联网医疗场景中的缓存技术与监控运维应用
java·redis·spring security·grafana·prometheus·oauth2·互联网医疗
摇滚侠11 小时前
Spring Boot 3零基础教程,yml配置文件,笔记13
spring boot·redis·笔记