Nginx:如何在不重定向的情况下使用 ngrok 映射内部 IP 地址和代理

Nginx: How to map the internal Ip addresses and proxy using ngrok without redirecting

我有两台设备只能通过内部网络访问。

为了从外部访问它,我在树莓派设备中安装了 nginx,并在 nginx 中添加了一个重定向,例如

location /device1 { return 301 http://192.168.0.1:80 }

类似地,我添加了 device2,现在我使用了 ngrok 并在外部公开了 localhost:80。

问题: 如果我在 device1 和 device2 的同一个网络中,我可以连接它。

如果我更改我的网络,我可以访问 nginx 默认页面。

现在如果我附加设备 1,它说找不到页面。

所需解决方案:

如何从不同的网络连接设备 1 和设备 2?

为什么需要这样说,例如我是 运行 亚马逊的一个应用程序,我想连接到我的内部设备 IP 并访问数据。

您需要使用 nginx 作为反向代理。最小配置是

location /device1/
{
  proxy_pass http://192.168.0.1/;
}

使用此配置请求 GET /device1/some/other/path 将作为 GET /some/other/path 到达您的设备。如果您删除 http://192.168.0.1/ 字符串的尾部斜杠,则相同的请求将作为 GET /device1/some/other/path 到达您的设备。您尝试执行的操作通常称为 "proxying something under some URI prefix",并且根据您在此前缀下代理的内容,可能会出现各种问题。