gpt4 book ai didi

php - nginx:auth_basic 和 php

转载 作者:可可西里 更新时间:2023-10-31 23:11:17 38 4
gpt4 key购买 nike

我想使用 auth_basic 密码保护我网站的文件夹。此文件夹包含应在请求时执行的 php 脚本。

我尝试了以下方法:

location /admin {
auth_basic "Admin-Section";
auth_basic_user_file /myfolder/.htpasswd;
}

location ~ ^/admin/.*\.php$ {
auth_basic "Admin-Section";
auth_basic_user_file /myfolder/.htpasswd;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

在请求该管理文件夹中的 php 脚本时,系统会要求我提供用户名/密码,但 php 脚本将始终被下载,而不是通过 fastcgi 执行。

我做错了什么?

编辑:在我的本地机器上,使用此配置一切正常。 o0
编辑:顺便说一句,php 在具有相同 fastcgi 选项的管理文件夹之外工作。
编辑:天啊!该站点的配置存储在/etc/nginx/sites-available/mysite 和/etc/nginx/sites-enabled/包含指向 mysite 文件的符号链接(symbolic link)。由于一段时间后更改 mysite 文件没有效果。例如。将所有位置更改为“全部拒绝”没有效果。文件发送没有问题。
所以我删除了符号链接(symbolic link)并重新启动了服务器。然后我再次创建符号链接(symbolic link),重新启动服务器,一切都按预期进行。有人可以解释这种奇怪的行为吗?

致以诚挚的问候,
大佬

最佳答案

使用此配置,nginx 将只匹配两个 block 中的一个 - 具有最高优先级的 block 。

解决方案是将 PHP block 合并到 AUTH block 中。这是 nginx 作者 Igor Sysoev 本人推荐的方法。

location /admin/ {
auth_basic "Admin-Section";
auth_basic_user_file /myfolder/.htpasswd;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

关于php - nginx:auth_basic 和 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4697010/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com