反向代理使用 virtualmin 在静态 url 上提供本地 ReactJS 应用程序

问题描述 投票:0回答:1

我有一个本地运行的reactJS应用程序,我想将其作为virtualmin上托管的域上的子域运行,以便该应用程序可以在本地托管但可以公开查看。

ngrok.io 允许您通过公开可见的子域为本地运行的 Reactjs 应用程序(或许多其他东西)提供服务。

(我的目的是回答我自己的问题,因为当我搜索时,我遇到了很多死胡同。我在搜索答案时尝试使用尽可能多的关键字。)

node.js reactjs reverse-proxy virtualmin
1个回答
0
投票
  1. 在 Virtualmin 上,单击“创建虚拟服务器”

  2. 对于域名,请使用“subdomain.x.com”

  3. 启用功能:设置 DNS 区域(如有必要)、启用 apache 网站和启用 apache ssl 网站。

  4. 点击服务器配置 -> 编辑代理网站

  5. 设置“代理已启用?”到“是”。代理网址:http://localhost:12809/

  6. 在本地主机上运行您的reactjs应用程序。我们假设它在端口 8301 上运行。

  7. 在您的本地主机上,建立到您的服务器的 ssh 隧道;做:

    ssh -N -T -R 12809:localhost:8301 [email protected]

7a) 在 ssh 上使用标志 -vv 进行测试。您应该在输出中看到这一行:

`debug1: remote forward success for: listen 12809, connect localhost:8301`

7b) 然后在服务器上,你可以这样做来测试是否有连接:

`telnet 127.0.0.1 12809`

如果您连接到服务器上的 telnet,那么您将在 ssh 命令的本地主机上看到消息:

`debug1: channel 1: connected to localhost port 8301`

7c) 如果有效,那么您还可以尝试从 virtualmin 服务器中获取 wget:

`wget 127.0.0.1:12809`

7d) 如果可行,您应该无法从 virtualmin 服务器外部进行 telnet/wget。它只能在您的服务器内部使用,apache 会将流量从子域代理到 127.0.0.1 的服务。您可以尝试

netstat -ntlp | grep 12809
以确保端口12809正在侦听。

  1. 重新加载“subdomain.x.com”,您本地运行的reactjs应用程序将在那里公开可见。

  2. 如果您需要启用 websockets,请确保将其添加到您的 apache 配置文件中,位置为“服务”->“配置网站”->“编辑指令”。

RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* ws://localhost:12809%{REQUEST_URI} [P]

在 RewriteEngine On 部分

编辑:当我最初写这篇文章时,这是一个不必要的步骤,但我将其留在这里是为了展示如何在您想要/需要时通过另一台服务器进行路由:

)将“caddy”下载到您的 virtualmin 用户主目录:https://caddyserver.com/download

) 然后在 caddy 上运行反向代理,从连接到本地主机的端口(在本例中为 9000)到 subdomain.x.com 提供的端口:

`./caddy reverse-proxy --from :12809 --to 127.0.0.1:9000`

)在这种情况下,您将在本地主机上运行 ssh,如

9000:localhost:8301

© www.soinside.com 2019 - 2024. All rights reserved.