AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-14951

alemartini's questions

Martin Hope
alemartini
Asked: 2009-07-31 17:51:50 +0800 CST

如何通过单个端口处理加密和未加密的 http 连接

  • 10

请看下图。

替代文字

这应该如何工作?

  • 当远程请求 http://myhost.com:8080/* 时,请求应该被转发到监听环回接口的 8008 端口的 http 服务器。这是简单的部分。

  • 当远程用户请求 http://myhost.com:8080/specialurl ...

    • 充当应用程序级网关的程序应该能够将连接升级到加密会话(无需更改端口)

    • 在与远程浏览器建立加密会话后,它应该将请求转发给监听环回接口的 8000 端口的 C 程序

我的问题是:

  1. 您是否曾经在生产环境中部署过这样的解决方案?如果你有...
  2. 您使用什么产品充当应用程序网关?
  3. 你能提供一个配置示例吗?

硬限制:

  • 我无法控制防火墙,唯一可以让外部流量进入内部服务器的端口是 8080。端口号无关紧要,问题是防火墙级别只有一个端口打开,可以转发传入的到内部服务器的流量。
  • 内部服务器必须运行 Linux(当前运行的是 Debian Lenny)
  • 远程用户只需要当前的 Web 浏览器和 Internet 连接即可访问此服务器。这意味着通过 SSH 进行反向端口转发在这里不是一个选项。
  • 我需要一个已经在生产中测试并且可以很容易部署的产品。我不打算开发自己的应用程序网关(如果是这样的话,我想我会在 Stack Overflow 上问这个问题,而不是在 Server Fault 上问它)。

软限制:

  • 我想避免将 Apache 作为应用程序网关(尽管如果这是唯一可能的选择,我愿意这样做)
  • 如果可能,应用网关应该是成熟的开源软件产品。

迄今为止作为应用程序网关尝试的产品(没有成功)

  • nginx
  • 轻量级
  • 磅

相关 RFC

  • RFC2817(...解释了如何使用 HTTP/1.1 中的升级机制通过现有 TCP 连接启动传输层安全性(TLS)。这允许不安全和安全的 HTTP 流量共享同一个众所周知的端口...)
  • RFC2818 ( ...描述了如何使用 TLS 来保护 Internet 上的 HTTP 连接。当前的做法是在 SSL 上分层 HTTP(TLS 的前身),通过使用不同的服务器端口来区分安全流量和不安全流量...... )
linux http nginx lighttpd https
  • 2 个回答
  • 2258 Views
Martin Hope
alemartini
Asked: 2009-07-30 18:58:33 +0800 CST

使用带有 nginx 的单个端口处理 http 和 https 请求

  • 23

我想知道 nginx 是否能够在同一端口上处理 http 和 https 请求。[*]

这就是我想要做的。我正在运行一个处理 http 请求的 Web 服务器 (lighttpd),以及一个通过 https 为文档树的特定部分提供服务的 C 程序。这两个进程在同一台服务器上运行。

在防火墙级别,我只能有一个端口将流量转发到此服务器。所以我想做的是在这台服务器上设置 nginx,以便它监听单个端口上的请求,然后:

A) 重定向所有http://myhost.com/ * 请求,以便它们转到 localhost:8080 (lighttpd 正在监听的地方)

B) 如果用户请求以 https://myhost.com/app 开头的 URL,它将将该请求发送到 localhost:8008(C 程序)。请注意,在这种情况下,远程浏览器和 nginx 之间的流量必须加密。

你认为这可能吗?如果是,怎么办?

我知道如何使用两个不同的端口来做到这一点。我面临的挑战是仅使用一个端口来执行此操作(不幸的是,我无法控制此特定环境中的防火墙配置,因此这是我无法避免的限制)。通过 ssh 使用反向端口转发等技术绕过防火墙也不起作用,因为这应该适用于只有 Web 浏览器和 Internet 链接的远程用户。

如果这超出了 nginx 的能力,你知道还有其他产品可以满足这个要求吗?(到目前为止,我没有成功用 lighttpd 和 pound 进行设置)。我也更喜欢避免使用 Apache(尽管如果它是唯一可能的选择,我愿意使用它)。

提前致谢, 亚历克斯

[*] 为了清楚起见,我说的是通过同一个端口处理加密和未加密的 HTTP 连接。加密是通过 SSL 还是 TLS 都没有关系。

http nginx lighttpd https
  • 9 个回答
  • 32478 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve