NginxHttpAuthBasicModule with Sinatra & Passenger

Hi,

I’m serving static pages from a Sinatra application using Nginx &
Phusion Passenger.

I’ve implemented Basic Authentication for one page on the site using
NginxHttpAuthBasicModule, the authentication succeeds but Nginx doesn’t
resolve the link. Error log gives -

2010/03/22 12:15:19  7143#0: *2902 open() 

“/home/me/live/mysite_home/public
/mypage” failed (2: No such file or directory), client:
82.71.18.122, server: mysite.com,
request: “GET /mypage HTTP/1.1”, host: “mysite.com

The actual file is found at:

 /home/me/live/mysite_home/live/mypage.erb

The configuration file is:

server {
listen 80;
server_name mysite.com;
root /home/me/live/mysite_home/public;
passenger_enabled on;

  location /mypage  {
    auth_basic            "Restricted";
    auth_basic_user_file  htpasswd;
  }

}

server {
listen 443;
server_name mysite.com;
root /home/me/live/mysite_home/public;
passenger_enabled on;
ssl on;
ssl_certificate      /etc/nginx/conf/certs/server.crt;
ssl_certificate_key  /etc/nginx/conf/certs/server.key;
keepalive_timeout    70;

  location /mypage  {
    auth_basic            "Restricted";
    auth_basic_user_file  htpasswd;
  }
}

Not sure if this is a Sinatra, Passenger or Nginx thing, or if I’m just
missing something.

Posted at Nginx Forum:

Hello!

On Mon, Mar 22, 2010 at 09:24:57AM -0400, scainey wrote:

82.71.18.122, server: mysite.com, request: "GET /mypage 
HTTP/1.1", host: "mysite.com"

The actual file is found at:

 /home/me/live/mysite_home/live/mypage.erb

[…]

Not sure if this is a Sinatra, Passenger or Nginx thing, or if
I’m just missing something.

The request to /mypage maps to /mypage file, this is quite
normal and nothing in your config suggests any other
interpretation.

If you expect this to be handled somehow by passenger - it’s
probably good idea to report the problem to passenger folks.
AFAIK there are no passenger folks here.

Maxim D.

Hi!

You must add passenger_enabled option inside location block.
This must looks like:

server {
listen 80;
server_name mysite.com;
root /home/me/live/mysite_home/public;
passenger_enabled on;

   location /mypage  {
     passenger_enabled on;

     auth_basic            "Restricted";
     auth_basic_user_file  htpasswd;
   }

}

Posted at Nginx Forum: