在 PHP 脚本的 httpd.conf 中将浏览器访问限制为一个 IP 地址

在 PHP 脚本的 httpd.conf 中将浏览器访问限制为一个 IP 地址

我的目标是仅有的允许IP 1.2.3.4运行/dir1/hello-php.php脚本。

“开箱即用”的 AWS EC2 linux 2 apache 2.4.39(仅包含以下更改)、PHP 5.7.26,并在 Windows 10 上使用 Firefox 70.0 64 位。php.conf 也有默认设置。

脚本.. /dir1/hello-php.php 和 /dir1/hello-html.html

Apache httpd.conf 和 php.conf 有默认设置,包括..

<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted

<Files ".ht*">
Require all denied

现在,我用 .. 更改了 httpd.conf。

<Directory "/var/www/html/dir1">
AllowOverride None
<Files "*.php">
    Require ip 1.2.3.4
</Files>

来自 Firefox..

https://www.website.com/dir1/hello-php.php给出“禁止:您无权访问此服务器上的 /dir1/hello-php.php。”然而...... https://www.website.com/dir1/hello-html.html 作品。

然后,如果我将指令改为..

<Directory "/var/www/html/dir1">
AllowOverride None
<Files "*.html">
    Require ip 1.2.3.4
</Files>

然后 ..

https://www.website.com/dir1/hello-php.php 有效。但是...... https://www.website.com/dir1/hello-html.html 给出“禁止:您无权访问此服务器上的 /dir1/hello-html.html。”

这些结果前后矛盾,没有达到我的目标。

我在 httpd.conf 或 php.conf 中缺少什么以便仅有的IP 1.2.3.4 是否可以成功运行/dir1/hello-php.php 脚本?

答案1

您可以禁止访问整个目录并仅允许指定的 IP:

<Directory "/var/www/html/dir1">
  AllowOverride None
  Require ip 1.2.3.4

或者在你的例子中,你可以这样做

<Directory "/var/www/html/dir1">
 AllowOverride None
<Files  ~ "\.(html|php)$">
 Require ip 1.2.3.4
</Files>

html 也不是脚本

相关内容