Wampserver 在通过 WAN/Internet 访问时返回 403 访问禁止错误 [关闭]

问题描述 投票:0回答:1

我不是真正的程序员,我正在做一个小的个人项目,我知道的信息有限,所以请多多包涵。

我目前正在尝试通过 Wampserver 建立一个小网页,当我的朋友通过互联网访问它时,我遇到了一些让它工作的技术困难,但在本地主机上运行完美。不可否认,原始编码不是我自己的,我主要是在尝试调整别人的代码以在 WAN 上工作,而不仅仅是本地主机。

使用我的外部 IP 通过指向 PHP 文件(看起来像 xxx.xxx.xxx.xxx/my_website.php)的 URL 访问该网页,然后提示用户创建一个帐户。然后,帐户凭据应存储在本地 MySQL 数据库中,他们随后可以使用该数据库在以后的访问中登录。当我从本地主机使用此表单时,此功能完美运行,但当外部用户访问时,网页显示完美,但提交表单导致错误“访问 xxx.xxx.xxx.xxx 被拒绝。你不有权查看此页面”。所以我不确定是什么原因造成的。对我来说,这似乎很难获得访问和写入数据库的正确权限。

我无计可施,试图解决这个问题,并且到处寻找解决方案。到目前为止,我已经尝试过:

  • 在 httpd.conf 和 httpd-vhosts.conf 中设置“Require All Granted”
  • 转发端口 80 (Apache) 和 3306 (MySQL),并在我的防火墙中将它们列入白名单
  • 使用静态IP。
  • 将 httpd.conf 设置为“Listen 80”以监听所有外部连接。
  • 添加服务器到主机文件。

我确定我可以更改任何其他设置可能会有所帮助,但我只是在这里问,以防我可能遗漏了一些明显被我忽略的东西。

无论如何,感谢您的阅读,我们将不胜感激。如果需要更多信息,请随时询问,我会尽我所能。

php mysql apache wamp
1个回答
0
投票

我认为没有必要从外部直接访问数据库。据我了解,整个过程是这样的:

STEP1:外部客户端访问边缘设备(路由器/防火墙)上的特定端口(通常是 tcp 80,因为它默认用于 http)。例如:从 1.1.1.1 到 2.2.2.2 tcp 端口 80

STEP2:路由器/防火墙检查其 DNAT 表(目标端口转发表)并将流量转发到目标内部 php 服务器。例如:从 2.2.2.2 到 192.168.100.1 tcp 端口 80

STEP3:收到请求后,php服务器处理工作并启动数据库连接。 e.g: from 2.2.2.2 to 192.168.100.2 tcp port 3306 注意:如果db server和php server在同一台主机上,可以用socket代替3306端口,简单来说就是在两者之间建立一个tcp连接php 服务器和数据库服务器,而不是在外部客户端和数据库服务器之间。

STEP4:数据库服务器完成创建账户的工作,并将反馈发送到 php 服务器。

STEP5:php服务器通过向路由器/防火墙发送信息来回复外部客户端,然后路由器/防火墙将流量转发回原来的外部客户端。

注意:有些东西前两步更容易往南走。
STEP1 边缘设备是否有一个STATIC公共IP地址?可以通过 DDNS 等其他方式来实现,但在您的情况下,静态公共 IP 地址是必不可少的。

STEP2:你不需要tcp 3306端口转发,但要确保边缘设备上的tcp 80端口转发正确配置,并且相应的流量被列入白名单。(同样适用于你的PHP服务器)注意:这个可能会让人感到意外,但在世界的某些地方,端口 80/443 受到审查,直到正式申请合法使用。

最后,在所有故障排除之后,您必须首先确保 tcp 网络按预期工作。某些测试很有用,例如使用 telnet 的 tcp 端口测试。例如,在您的客户端上打开一个终端窗口并输入以下命令:

telnet 2.2.2.2 80

您会发现工作连接和无法访问的连接之间有不同的返回消息。

© www.soinside.com 2019 - 2024. All rights reserved.