Wampserver 403通过互联网访问时出错[关闭]

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

我目前正在尝试通过 Wampserver 建立一个小型 php 网站,但在通过 Internet 访问时遇到一些技术困难,无法让它正常工作。使用我的外部 IP 通过指向 PHP 文件(看起来像 xxx.xxx.xxx.xxx/my_website.php)的 URL 访问该网页。主页显示一个表单,提示用户创建一个帐户,然后将该帐户信息存储在 MySQL 数据库中。

问题

通过外部连接访问时可以在线查看网站,但提交表单会产生 403 错误。

应该发生什么:

  • 通过互联网访问时可以查看网站(按预期工作)
  • 可以填写帐户创建表单字段(按预期工作)
  • 单击提交按钮应将用户重定向到显示“帐户创建成功”的网页并将登录信息存储在数据库中(仅在本地主机上工作。外部尝试导致 403 错误)

到目前为止,我已经尝试过:

  • 在 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.