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

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.

Reply via email to