首页 > 解决方案 > Nginx反向代理没有定义server_name?

问题描述

我需要访问专用网络中的网络服务器,该网络服务器无法从外部直接访问。打开路由器端口等不是一种选择。

我尝试使用该网络中的 raspi 来解决这个问题,我可以通过 upswift.io 进行管理。
除其他外,upswift 允许通过 url 对给定端口进行临时远程访问,例如

http://d-4307-5481-nc7nflrh26s.forwarding.upswift.io:56947/

这将映射到我可以定义的端口。有了这个,我可以访问 pi 上的 VNC 服务器,在那里启动浏览器并访问我需要的网络服务器。

但我希望找到一种更优雅的方式,我可以从本地浏览器访问站点,并且 Pi 不需要运行桌面。

据我所知,这可以通过像 nginx 这样的反向代理来完成。我找到了很多关于它的教程,但我在某一点上很挣扎:

在能够安装 nginx 并通过临时 upswift.io url 从我的本地浏览器访问它的默认索引页面后,我无法让它作为反向代理工作。

我认为我的 conf 需要看起来像

server {
    listen 80;
    server_name example.com;
    location / {
    proxy_pass http://192.x.x.2;
    }
}

其中 example.com 是访问设备的名称或 IP。现在,这对我不起作用,因为该名称是动态的。所以我想知道是否有办法配置 nginx 所以它不需要那个名字。我希望这是可能的,因为默认的网络服务器配置也可以在没有它的情况下工作。反向代理在这方面有什么不同吗?

或者,有没有比使用反向代理更好的方法来做我想做的事?

标签: nginxreverse-proxy

解决方案


您可以尝试将其定义为默认块

server {
    listen 80 default_server;
    server_name _;
    location / {
      proxy_pass http://192.x.x.2;
    }
}

推荐阅读