【问题标题】:Nginx password protected directory not working for deeper linksNginx 密码保护目录不适用于更深层的链接
【发布时间】:2017-03-28 05:08:02
【问题描述】:

如果您访问 mydomain.com/protected_folder/,我有一个 Nginx 密码保护目录,它工作得很好。但是,如果我去 mydomain.com/protected_folder/index.php 页面加载就好了......它不应该。

如何设置我的位置阻止以完全阻止所有通过受保护目录的访问?

我的块:

location /protected_folder {
        try_files $uri $uri/ =404;
        auth_basic "Protected Folder Login";
        auth_basic_user_file /etc/nginx/my_pass;
         }

作为旁注。当我有整个站点的密码保护时,这不是问题。

【问题讨论】:

    标签: nginx passwords nginx-location


    【解决方案1】:

    问题是.php 文件没有被这个位置块处理。它们由诸如location ~ \.php$ 之类的位置块处理。

    如果您使用^~ 修饰符,您将强制此位置块的优先级高于正则表达式位置块。详情请见this document

    这当然会阻止//mydomain.com/protected_folder/index.php 正确执行。要更正此问题,您将需要一个嵌套的 location ~ \.php$ 块来处理 /protected_folder 下的 .php 文件。

    例如:

    root /path/to/root;
    
    location ^~ /protected_folder {
        try_files $uri $uri/ =404;
        auth_basic "Protected Folder Login";
        auth_basic_user_file /etc/nginx/my_pass;
    
        location ~ \.php$ {
            ...
        }
    }
    
    location ~ \.php$ {
        ...
    }
    

    嵌套的location ~ \.php$ 块是server 块中现有location ~ \.php$ 块的副本。

    【讨论】:

    • 谢谢理查德,这似乎已经成功了。谢谢一百万!
    猜你喜欢
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多