如何使用一个端口运行两个应用程序?

如何使用一个端口运行两个应用程序?

我的网站上的 https 运行得很好,直到最近政府决定封锁几乎所有的 VPN 协议,现在才可以openconnect正常运行。

因此,我在我的服务器上安装并配置了它openconnect,不幸的是它不允许我启动该服务,因为我nginx使用的是 443 端口(使用端口 443),所以我从我的并运行服务openconnect中删除了 https 配置。nginxopenconnect

nginx现在我也想在我的上配置 https 。

我知道一个端口通常不能被两个应用程序/服务使用。但是有没有办法让我在nginxopenconnect上都使用端口 443,并让haproxytraefiknginx本身之类的程序来监督它们,并让它们都了解 VPN 客户端或浏览器是否想要连接?

编辑:我找到了这个网址,但我想知道这是否是我的问题。

https://ocserv.gitlab.io/www/recipes-ocserv-multihost.html

答案1

https://ocserv.gitlab.io/www/recipes-ocserv-multihost.html

此链接解决了我的问题,但需要进行一些更改。

在 /etc/haproxy/haproxy.cfg 中你应该将两行部分default

mode http
option httplog

mode tcp
option tcplog

该网站的代码中还有一行:

use-server server-vpn if vpn-app
use-server server-web if web-app
use-server server-vpn if !vpn-app !web-app

这对我来说不起作用,这样它会将所有流量路由到 server-vpn,但在我注释掉第三行之后,我就可以让它工作了。

答案2

就我个人而言,正如@amin-vakil 指出的那样,我发现在 ocserv 前面使用反向代理(如 haproxy 或 nginx)效果很好,但有一个问题。如果您希望能够使用 DTLS,并且您正在使用 haproxy,则 haproxy 默认不会代理 UDP(由 DTLS 使用),因此我最终使用 haproxy 仅路由 TCP 连接,并让 ocserv 在主接口上监听 UDP,只是在不同的端口上。由于 DTLS 是在建立初始连接后协商的,由 ocserv 声明用于协商的端口,因此这似乎不是问题。

我的网络设置如下所示:

                   VPS BOX                                                                 
                |---------------------------------------------------------------------------|  
                |              others *< ----+                                              |  
                |                            |      vpn.<domain>.com rev proxy pass-thru to |  
                |                |------@HA Proxy -----------|  127.0.1.1:443               |  
                |                |                           | (SSL handled by ocserv)      |  
                |               [TCP 80 & TCP 443]           |                              |  
inet --> public IP - > 10.10.0.5                             |---> 127.0.1.1                |  
                |         [udp 44443]                               [tcp 443]               |  
                |          \                                         |                      |  
                |           \                                        @                      |  
                |            \-------------------------------------=@ocserv listening on    |  
                |                                 tcp 127.0.1.1:443 & udp 10.10.0.5:44443   |  
                |---------------------------------------------------------------------------|  

相关内容