加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

在nginx中为相对URL使用别名时的禁止位置

发布时间:2020-12-13 21:01:52 所属栏目:Nginx 来源:网络整理
导读:我试图在相对网址上设置带有nginx的roundcube / phpldapadmin / ,例如: example.com/roundcubeexample.com/phpldapadmin 首先,Apache 2.4一切正常.我有以下文件夹: # roundcube/var/www/roundcube# phpldapadmin/usr/share/phpldapadmin 我有圆形立方体的

我试图在相对网址上设置带有nginx的roundcube / phpldapadmin / …,例如:

example.com/roundcube
example.com/phpldapadmin

首先,Apache 2.4一切正常.我有以下文件夹:

# roundcube
/var/www/roundcube
# phpldapadmin
/usr/share/phpldapadmin

我有圆形立方体的以下位置:

location /roundcube/ {
    root /var/www;
    index index.php;

    location ~ .php${
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

哪个工作正常,但phpldapadmin的以下功能不起作用:

location /phpldapadmin/ {
    alias  /usr/share/phpldapadmin/htdocs;
    index  index.php index.html index.htm;

    location ~ .php${
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

我得到403禁用,包含以下日志:

2016/02/07 21:43:33 [error] 23047#0: *1 directory index of "/usr/share/phpldapadmin/htdocs" is 
forbidden,client: xxx.xxx.xxx.xxx,server: ****,request: "GET /phpldapadmin/ HTTP/1.1",host: "****"

我检查了许可:

$namei -om /usr/share/phpldapadmin/htdocs
f: /usr/share/phpldapadmin/htdocs
 drwxr-xr-x root root     /
 drwxr-xr-x root root     usr
 drwxr-xr-x root root     share
 drwxr-xr-x root root     phpldapadmin
 drwxr-xr-x root www-data htdocs
$ls -l /usr/share/phpldapadmin/htdocs/index.php
-rw-r--r-- 1 root root 20036 Oct 28 17:32 /usr/share/phpldapadmin/htdocs/index.php

我尝试将所有者更改为:www-data但它不起作用.当我尝试使用以下方法进行roundcube时,它不起作用:

location /roundcube/ {
    alias /var/www/roundcube;
    ...
}

我认为这可能是尾随/或类似的问题,但我对nginx很新,所以我找不到它……

基本上,我有这个问题的反问题:https://stackoverflow.com/questions/31820362/nginx-403-directory-is-forbidden-when-using-root-location

位置和别名都应该有一个尾随/或者都没有尾随/.但在您的情况下,您应该为两个位置块使用root而不是别名.

location /roundcube {
    root /var/www;
    index index.php;

    location ~ .php${
        try_files $uri =404;

        fastcgi_pass unix:/var/run/php5-fpm.sock;

        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

location /phpmyadmin {
    root  /usr/share;
    index  index.php index.html index.htm;

    location ~ .php${
        try_files $uri =404;

        fastcgi_pass unix:/var/run/php5-fpm.sock;

        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

fastcgi_index不会在仅匹配.php的位置执行任何操作(请参阅this document).

两个块中都需要SCRIPT_FILENAME参数(如果它已经在/ etc / nginx / fastcgi_params中,则不需要).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读