I tested your config, it's working with one little problem. If I remove
header that I send before, browser (Firefox) not asking for credentials
on "rest.php" file. I can use Thunderbird extension without problem -
that mean it's working. But browser don't show up username/password window.
Maybe it's my settings (I'm using Firefox on Debian), I don't know. I
was always testing with browser, because that was written in FAQ on page
with Thunderbird extension (... If the URL is correct, the browser
/must/ prompt for an username/password...). With header added, browser
asking for password as it should.
I know it's problem of Nginx, but maybe you can help me with with
another little think. With your setup, if I try to enter /include/
directory, I always get back url "/include/=404" and my browser said,
that server is redirecting to itself.
Thank you again for your time and solving this.
Dne 22.10.2014 17:28, Yuri D'Elia napsal(a):
On 10/17/2014 07:36 PM, "Jan B. Kolář" wrote:
Dear all,
I can't figure out how to set up Nginx for "rest.php" authentication to
work. I'm using Nginx+PHPfpm and MySQL as backend (I want use "Internal
authentication"). Web interface is working fine - I can log in without a
problem.
But I can't use integration with Thunderbird, because "rest.php" file is
always returning "401 Unauthorized" without asking for username and
password (no login dialog appear). I can't find any help in manual.
My Nginx config part for "rest.php" file is:
location = /rest.php {
fastcgi_pass_header Authorization;
fastcgi_pass unix:/var/run/dl.smurv.cz-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
I just tried a stock DL 0.15 using nginx on Debian.
When installed as a subdirectory, I could get DL to work with the following:
location ^~ /dl {
# Protect the include directories
location ~ ^/dl(?:/|/.*/)include {
deny all;
}
index index.php index.html;
try_files $uri $uri/ =404;
# Enable PHP
location ~ \.php(?:$|/) {
include fastcgi_params;
# Set maximum body size (should be the same as PHP's post_max_size)
client_max_body_size 512M;
# Setup PATH_INFO
fastcgi_split_path_info ^(.+\.php)(/.+)$;
try_files $fastcgi_script_name =404;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
Notice the order of the location directives to protect the include directories,
and also the PHP location matching ``\.php(?:$|/)'' in order to allow PATH_INFO
to route requests properly.
After that I didn't need to forward any header explicitly, and it works fine.
Let me know if this helps.