【问题标题】:How can I remotely access a localhost application running on a Windows Server using PHP?如何使用 PHP 远程访问在 Windows Server 上运行的 localhost 应用程序?
【发布时间】:2021-05-14 14:32:56
【问题描述】:

我们正在使用 Paxton 软件,该软件在 Windows 服务器上运行。 Windows Server 由域名 (winserver.domain.com) 和 IP 地址托管和访问。

在 Windows Server 上,Paxton Software 正在运行,并且他们有一个使用 nginx 的 Web API (REST)。我们可以使用 localhost:8080 作为主机名(使用 RDP)调用 Windows Server 上的 API。到目前为止,一切顺利。

现在,我们想创建一个连接到 Paxton 的多个 Web API 的 PHP 应用程序。基本上,它应该连接到多个 Windows 服务器,并且应该可以调用 API 端点。

我们的尝试:我们尝试使用 CURL 向 Windows 服务器发出请求。我们尝试设置一个代理到 IP 地址:3389(这是 RDP 正在使用的端口),使用 PROXYUSERPWD 登录。遗憾的是,这不起作用,因为出现以下错误:Recv failure: Connection was reset。脚本:

$url = 'http://localhost:8080/webapihelp/';
$proxy = 'http://0.0.0.0:3389';
$proxyauth = 'username123:password456';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$curlResponse = curl_exec($ch);
var_dump(curl_error($ch));
curl_close($ch);

是否可以直接连接到 Windows Server?如果没有,我们需要什么来实现这个目标?

【问题讨论】:

  • 可能是您的网络服务器设置为仅侦听本地主机,即serverfault.com/questions/279201/…
  • 你试过只使用没有代理的服务器IP吗?
  • server_name 设置为 _ (不应该只听本地主机),我也将其删除并重新启动服务器,但没有成功。当我尝试使用 curl 直接连接到服务器时,会显示相同的错误消息(接收失败:连接已重置)。连接到端口 80(而不是 3389)时,会出现超时。
  • 你可能想多了。如果您可以在 localhost:8080 上本地调用 API,我希望外部设备可以连接到 <iIP address>:8080<url>:8080。您可能需要在服务器上配置防火墙以允许外部连接。
  • @TangentiallyPerpendicular 你是对的!该端口被防火墙阻止。问题。解决了。谢谢!

标签: php nginx curl remote-desktop windows-server


【解决方案1】:

有很多选择。

  1. 您或许可以将服务器软件配置为在公共端口上侦听;
  2. 使用 netsh 在运行 Paxton Software 的服务器上转发公共端口。 “listenaddress”将是您服务器的网络地址,connectaddres 将是 localhost。 netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
  3. 在您的 Windows 服务器上安装 SSH 服务器,并从运行 PHP 应用程序的服务器向您的 Windows 服务器添加隧道。
    它更安全,因为只有您的 PHP 服务器才能访问本地端口。
    我过去曾使用“autossh”来确保隧道保持打开状态。
    您可以将端口直接从客户端主机(网络)转发到服务器主机(网络),反之亦然。检查 ssh 的“-R”和“-L”选项。
  4. 使用rdp2tcp - 从未使用过,但它专门与 RDP 一起使用以转发 TCP 端口。

【讨论】:

    猜你喜欢
    • 2013-11-09
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    相关资源
    最近更新 更多