Forbidden location when using alias in nginx for relative urls -
i trying set roundcube / phpldapadmin / ... nginx on relative urls, e.g.:
example.com/roundcube example.com/phpldapadmin first of all, working fine apache 2.4. have following folders:
# roundcube /var/www/roundcube # phpldapadmin /usr/share/phpldapadmin i have following location roundcube:
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; } } which works fine, following phpldapadmin not work:
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; } } i 403 forbidden, following logs:
2016/02/07 21:43:33 [error] 23047#0: *1 directory index of "/usr/share/phpldapadmin/htdocs" forbidden, client: xxx.xxx.xxx.xxx, server: ****, request: "get /phpldapadmin/ http/1.1", host: "****" i checked permission:
$ 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 i tried changing owner :www-data did not work. when tried following roundcube did not work:
location /roundcube/ { alias /var/www/roundcube; ... } i thinking problem trailing /, or similar, new nginx can't find it...
basically, have inverse problem of question : https://stackoverflow.com/questions/31820362/nginx-403-directory-is-forbidden-when-using-root-location
the location , alias should both have trailing / or neither have trailing /. in case, should using root instead of alias both location blocks.
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; } } the fastcgi_index not in location matches .php (see this document).
the script_filename parameter needed in both blocks (or neither if in /etc/nginx/fastcgi_params).
Comments
Post a Comment