发布
社区首页 >问答首页 >如何将端口80上的非http请求转发到另一个端口?

如何将端口80上的非http请求转发到另一个端口?
EN

Server Fault用户
提问于 2017-06-25 14:57:17
回答 1查看 8.2K关注 0票数 2

有一个nginx服务器同时监听80和443个端口。我想像往常一样处理所有的http请求,并将所有非http请求转发到另一个端口(例如,1234)。

我的问题非常类似于堆栈溢出中已经回答的一个问题:是否可以将非连接请求转发到nginx中的其他端口?。也许,我误解了多数人投票的答案,但当我在nginx.conf中添加这样的内容时:

代码语言:javascript
代码运行次数:0
复制
stream {
    upstream backend {
        server example.com:1234;
    }

    server {
        listen 80;
        proxy_pass backend;
    }
}

我得到了(预期的) bind() to 0.0.0.0:80 failed (98: Address already in use)错误。

EN

回答 1

Server Fault用户

发布于 2017-06-26 02:58:40

nginx只能同时向一个端口提供一种服务。

因此,此配置将工作:

代码语言:javascript
代码运行次数:0
复制
http {
    server {
        listen 80;

        server_name example.com;
        ...
    }
}

stream {
    server {
        listen 81;
        proxy_pass backend;
    }

    upstream backend {
        server 127.0.0.1:12345;
    }
}

您不能在streamhttp块上使用相同的端口,因为nginx无法区分流量类型。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/857766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档