首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过NGINX重路由SFTP流量

问如何通过NGINX重路由SFTP流量
EN

Stack Overflow用户
提问于 2016-02-18 11:37:53
回答 2查看 13.8K关注 0票数 0

我正在尝试设置一个FTP子域,这样所有传入(比如说) ftp.myname.com的SFTP请求都会通过端口22路由到一个特定的内部服务器(比如) 10.123.456。

如何使用nginx来路由此流量?

我已经设置了SFTP服务器,可以直接通过SFTP连接到服务器,例如:

sftp username@123.456.7890,工作正常。

问题是,当我设置nginx将所有流量路由到ftp.myname.com时,它会连接,但密码被拒绝。我没有问题路由网络流量到我的其他子域,例如dev.myname.com (使用密码),但它不适用于SFTP流量:

代码语言:javascript
复制
server {
    listen 22;
    server_name ftp.myname.com;
    return .............
}

如何定义返回字符串,以便使用密码来路由流量?

连接是SFTP (通过端口22)。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2018-06-22 15:42:20

@peixotorms:是的,你可以。nginx可以代理/负载平衡http以及tcp和udp流量,请参阅nginx流模块文档(位于nginx main documentation page),特别是stream core module's documentation。

票数 1
EN

Stack Overflow用户

发布于 2016-02-18 23:16:24

你不能在nginx (仅限http)上这样做,你必须使用类似HaProxy的东西,并为你的子域创建一个指向服务器ip的简单dns记录。

部分信息:http://jpmorris-iso.blogspot.pt/2013/01/load-balancing-openssh-sftp-with-haproxy.html

编辑:

从nginx版本1.15.2开始,现在可以使用变量$ssl_preread_protocol来实现这一点。官方博客添加了关于如何使用此变量在同一端口上多路复用HTTPS和SSH的帖子。https://www.nginx.com/blog/running-non-ssl-protocols-over-ssl-port-nginx-1-15-2/

在上游数据块上配置SSH的示例:

代码语言:javascript
复制
stream {
    upstream ssh {
        server 192.0.2.1:22;
    }

    upstream sslweb {
        server 192.0.2.2:443;
    }

    map $ssl_preread_protocol $upstream {
        default ssh;
        "TLSv1.2" sslweb;
    }

    # SSH and SSL on the same port
    server {
        listen 443;
        proxy_pass $upstream;
        ssl_preread on;
    }
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35472363

复制
相关文章

相似问题

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