PHP在位置指令中不起作用

考林

我已经设置了一个测试的Virtualbox / Debian Wheezy7.1机器,该机器带有一个裸露的网络安装机器+ nginx + php-fpm

我有SSL,php,basic_auth和允许/拒绝在服务器级别上工作。

但是,如果我只希望auth东西仅用于一个路径,则auth可以工作,但是PHP东西不起作用(将index.php下载到Web浏览器中)

我知道这与nginx如何匹配位置指令有关,但是我不确定这是什么...

这是我的配置文件:

server {
       listen         80;
       server_name    www.test.com;
       rewrite        ^ https://$server_name$request_uri? permanent;
}



# HTTPS server

server
{
    listen 443;
    server_name www.test.com;

    root /srv/vhosts/www.test.com/html;
    index index.php ;

    ssl on;
    ssl_certificate /etc/nginx/certs/STAR.test.com.crt;
    ssl_certificate_key /etc/nginx/certs/STAR.test.com.key;

    ssl_session_timeout 5m;

    ssl_protocols SSLv3 TLSv1;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;


    location / {
        try_files $uri $uri/ =404;
    }
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

                # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }   

    location ^~ /testdir/ {
        auth_basic "gib login";
        auth_basic_user_file /etc/nginx/htpasswd/www.test.com.htpasswd;
        allow 192.168.1.3;   # my workstation ip
        deny all;
    }
}

编辑:看第一条评论,谢谢!

查尔斯·波特伍德二世

根据nginx文档,位置指令的顺序很重要。

为了确定哪个位置指令与特定查询匹配,首先检查文字字符串。文字字符串匹配查询的开头部分-将使用最具体的匹配项。然后,以配置文件中定义的顺序检查正则表达式。第一个与查询匹配的正则表达式将停止搜索。如果找不到正则表达式匹配项,则使用文字字符串搜索的结果。

尝试组织位置指令,以便首先保护目录,然后是PHP,然后是try__files指令。我对系统进行了快速测试,并按照以下顺序构造了位置块:允许testdir对其进行保护并index.php仍然可以执行。

location ^~ /testdir/ {
    auth_basic "gib login";
    auth_basic_user_file /etc/nginx/htpasswd/www.test.com.htpasswd;
    allow 192.168.1.3;   # my workstation ip
    deny all;
}

location ~ \.php$ {

}

location ~ / {
    try_files $uri $uri/ 404;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

覆盖nginx中的位置指令不起作用

来自分类Dev

PHP中的标题位置不起作用

来自分类Dev

在位置“相对”的 div 中移动 div 不起作用

来自分类Dev

codeigniter htaccess php指令不起作用

来自分类Dev

nginx-rewrite指令如何与标志一起在位置匹配上起作用?

来自分类Dev

ngModelOptions在指令中不起作用

来自分类Dev

指令中的AngularJS谓词不起作用

来自分类Dev

AngularJS $ filter在指令中不起作用

来自分类Dev

指令链接中的绑定不起作用

来自分类Dev

指令中的子菜单不起作用

来自分类Dev

ngModelOptions在指令中不起作用

来自分类Dev

angularjs $ watch在指令中不起作用

来自分类Dev

指令在不同的文件中不起作用

来自分类Dev

视口高度(vh)在位置粘滞下不起作用

来自分类Dev

React Native-TouchableOpacity在位置为绝对的容器上不起作用

来自分类Dev

位置:粘性在Firefox中不起作用

来自分类Dev

位置跟踪在GPS中不起作用

来自分类Dev

位置在Firefox中不起作用?

来自分类Dev

位置getAccuracy()在GPS中不起作用

来自分类Dev

指令不起作用angularjs

来自分类Dev

指令不起作用angularjs

来自分类Dev

Angular指令不起作用

来自分类Dev

数据绑定在指令中的事件中不起作用

来自分类Dev

指令内部指令。编译不起作用?

来自分类Dev

点击处理程序在模板扩展指令中不起作用

来自分类Dev

Angular指令在ionic.js中不起作用

来自分类Dev

Angular指令在Alertify setContent内容中不起作用

来自分类Dev

条纹角形式在指令中不起作用

来自分类Dev

范围分配在指令中不起作用