目录:
文章目录
- 需求简介:
- Q1: nginx的http模块和http模块有什么不同
- Q2: 可以都使用stream模块进行配置吗
- Docker环境下如何转发
- 1 修改docker-compose
- 2 修改nginx.conf
- 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连接测试。
提示连接成功,即可