无法用nginx的反向代理实现公网子域名访问用docker部署的emqx服务吗?

今天尝试用nginx对docker的emqx镜像创建的mqtt服务器做代理时,发现不能在http{}里进行配置了,如下,原先可以只用一个域名部署多个项目,通过nginx子域名代理实现.

http{
  server {
    server_name www.console.xn.com;
    listion 80;
  }
}

现在需要在stream模块里进行配置,但是和http模块的配置不同的是,当我配置了server_name 时,nginx会报错

"server_name" directive is not allowed here in /etc/nginx/nginx.conf:223

如果stream里无法配置server_name 是不是说明,没办法通过子域名来访问用docker搭建好的emqx?

是的,在 nginx 的 stream 模块中不能使用 server_name 指令。这意味着你不能通过子域名来访问用 Docker 搭建的 emqx 服务。可以通过使用不同的 IP 地址来访问不同的服务,或者使用不同的端口号来访问不同的服务。

已解决:是容器没有开放端口,导致NGINX转发不进来