当前位置: 首页 > 知识库问答 >
问题:

nginx - 如何配置Nginx转发请求到内网穿透服务?

都博裕
2024-03-31

Nginx反向代理转发到内网穿透的本地服务失败。
我的nginx部署在阿里云服务器上,然后想将请求转发到内网穿透的本地服务上,总是404,网上找了很多文章,也不知道是哪里出现了问题,求解!

  1. 这是域名对应的本地服务IP端口。 http://orzzzsy.nat300.top -> 127.0.0.1:9999
  2. 阿里服务器能够访问我内网穿透的域名,获取到数据
    图片
    我预期是能够通过访问nginx服务器,也就是http://8.130.###.##/api/system/dictionary/all 这个地址,将请求转发到我内网穿透的本地服务 http://orzzzsy.nat300.top/system/dictionary/all。但是无法解决404报错问题

3.nginx访问报错如下
图片

  1. nginx配置文件如下
http {     #后台网关     upstream gateway {          server orzzzsy.nat300.top;      }     server {        listen       80;        server_name  8.130.###.##         #前端门户网站         location / {            root /usr/local/nginx/static-portal;            index  index.html index.htm;        }        #api        location ^~ /api {            proxy_pass http://gateway/;        }

共有2个答案

岳泳
2024-03-31

问题解决了,nginx将请求转发到了120.26.87.232:80(域名对应的IP地址),但是内网穿透没办法通过此IP访问(报错:Tunnel 120.26.87.232 not found),只能通过域名访问,所以要在Nginx设置Host头

location ^~ /api {    proxy_pass http://gateway/;    proxy_set_header Host orzzzsy.nat300.top;}
郎成弘
2024-03-31

基于你的描述和配置文件,你可能在内网穿透服务器和 Nginx 反向代理之间的路径映射上遇到问题。在 Nginx 的 proxy_pass 指令中,你需要确保路径被正确地映射。

在你的配置中,你试图将所有以 /api 开头的请求转发到 http://gateway/,然后这个请求将被发送到你的内网穿透服务 orzzzsy.nat300.top。但是,这样可能会丢失 /api 后面的路径部分。

你需要做的是保留原始请求的路径,这样它们可以正确地被转发到你的内网穿透服务。你可以通过在你的 proxy_pass 指令中使用 $request_uri 变量来实现这一点,这个变量包含了完整的请求 URI。

所以,你的配置应该修改为:

http {    # 后台网关    upstream gateway {        server orzzzsy.nat300.top;    }    server {        listen       80;        server_name  8.130.###.##          # 前端门户网站         location / {            root /usr/local/nginx/static-portal;            index  index.html index.htm;        }        # api        location ^~ /api {            proxy_pass http://gateway$request_uri;        }    }}

这样,所有以 /api 开头的请求都将被转发到 http://orzzzsy.nat300.top,并且保留原始路径。

此外,请确保你的内网穿透服务 orzzzsy.nat300.top 能够正确处理这些请求,并且确实在监听 9999 端口。你也可能需要在内网穿透服务中配置相应的路径映射。

如果你还是遇到问题,请再次检查 Nginx 的错误日志,看看是否有任何其他的错误或警告信息。你也可以尝试直接在浏览器中访问 http://orzzzsy.nat300.top/system/dictionary/all,看看是否能正常获取数据。

如果以上方法仍然无法解决问题,那么可能需要进一步查看你的网络设置和防火墙规则,以确保没有任何东西阻止请求从 Nginx 服务器转发到你的内网穿透服务。

 类似资料:
  • 我有钥匙,有证书,有连锁证书。这个域名看起来像automation.mydomain.com 我有一个Sinatra服务器在上运行,通过确认。 我想将端口80和端口443流量重定向到3000。这是我的配置: 请注意,上述方法不起作用(http://automation.mydomain.com/结果

  • 主要内容:1. 根目录和索引文件,2. 尝试几个选项,3. 优化NGINX服务内容的速度本节介绍如何使用NGINX来提供静态内容服务,定义搜索路径以查找请求的文件的方法,以及如何设置索引文件。 在这个部分,我们主要涉及以下几个方面的内容: 根目录和索引文件 尝试几个选项 优化NGINX服务内容的速度 1. 根目录和索引文件 root指令指定将用于搜索文件的根目录。 要获取请求文件的路径,NGINX将请求URI附加到指令指定的路径。 该指令可以放置在,或上下文中的任何级别上。 在下面的

  • 问题场景: 我想实现在nginx的upstream服务组中获取当服务器是否轮询到了backup;如果轮询到我就在nginx的配置文件中发送一个接口请求,类似于飞书(钉钉)的消息通知 告诉当前的服务已经backup了 实现的方式: 我本地是mac的开发环境下载了openresry通过lua脚本进行请求接口,下载了resty.http实现了请求,因为请求的地址是https的,我本地使用mkcert生成

  • 主要内容:1. 设置虚拟服务器,2. 配置位置,3. 使用变量,4. 返回特定状态码,重写URI请求,5. 重写HTTP响应本文介绍如何将NGINX配置作为Web服务器,并包括以下部分: 设置虚拟服务器 配置位置 使用变量 返回特定状态码 重写请求中的URI 重写HTTP响应 处理错误 在高层次上,将NGINX配置作为Web服务器有一些问题需要了解,定义它处理哪些URL以及如何处理这些URL上的资源的HTTP请求。 在较低层次上,配置定义了一组控制对特定域或IP地址的请求的处理的虚拟服务器。 用

  • 内网穿透是我们在进行网络连接时的一种术语,也叫做NAT穿透,内网穿透的功能就是,当我们在端口映射时设置时,内网穿透起到了地址转换的功能。 内网穿透的原理很简单的说就是: 两台计算机A和B都处于不同的局域网中,A想要访问B, 就需要通过一台服务器做桥接的,桥接的方式有两种,一种是服务器相互转发流量 到A和B,另一种是告诉对方公网IP地址,自己充当一个介绍人的角色, 专业术语叫DNAT目标地址转换。

  • 本文向大家介绍SSH端口转发实现内网穿透的实现,包括了SSH端口转发实现内网穿透的实现的使用技巧和注意事项,需要的朋友参考一下 我们局域网的机器能够访问外网,但是外网不能访问内网。因为内网访问互联网时候能确定外网的地址,外网却不能确定我们局域网内的具体地址。(ip地址有限)如果 我们在访问外网的时候,这个链接让他保持、不断,那么这个链接就相当于我们建了一条路,内网数据能出去,外网数据能进来,ssh