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",并且根据您在此前缀下代理的内容,可能会出现各种问题。
我有两台设备只能通过内部网络访问。
为了从外部访问它,我在树莓派设备中安装了 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",并且根据您在此前缀下代理的内容,可能会出现各种问题。