Configuration problem

Hi All,

I wish to configure phplist under nginx on multiple domains.

phplist is installed into /lists in the root directory, and
/lists/config/config.php is amended to give access to a php database.

I though to move /lists to a location outside the normal web tree,
replace /config/config.php with a script to test the domain name in
$_SERVER, and load the appropriate configuration parameters.

So the first job is to move /lists for one domain and get that working.
The nginx configuration I have tried is this.

Statements for example.com virtual server

server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/htdocs;
access_log /var/www/example.com/access.log;
index index.php index.html index.htm;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ^~ /usage {
auth_basic “Hello, please login”;
auth_basic_user_file /var/www/example.com/passwords;
}
location ^~ /lists {
root /var/www/phplist;
}
location ~ .php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
}
try_files $uri $uri/ /index.php;
}

The idea being that the " location ^~ /lists {" stanza moves the root,
and the “location ~ .php$ {” stanza sends .php files off to fast_cgi,
while nginx serves other assets from the relevant one of the two roots.

Unfortunately, nginx serves the phplist php files, without passing them
to fast_cgi, and the browser treats them as downloads. :frowning:

What is wrong with my configuration?

Thanks

Ian

29.05.2012, 17:22, “Ian H.” [email protected]:

location = /favicon.ico {
auth_basic_user_file /var/www/example.com/passwords;
}
location ^~ /lists {
root /var/www/phplist;
}
location ~ .php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

  • location ~ ^/lists/.+.php$ {
  • root /var/www/phplist;
  • include /etc/nginx/fastcgi_params;
  • fastcgi_pass 127.0.0.1:9000;
  • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  • }

What is wrong with my configuration?

Thanks

Ian


br, Denis F. Latypoff.

On Tue, May 29, 2012 at 11:22:06AM +0100, Ian H. wrote:

 location = /favicon.ico {
   auth_basic_user_file /var/www/example.com/passwords;

}
Thanks

Ian

Quoting Module ngx_http_core_module, “If the most specific prefix
location has the “^~” prefix then regular expressions are not checked.”

In your case, if the request matches the prefix location “/lists”,
you explicitly told nginx not to match it against regexp locations
including “.php$”. “location /lists” would be a proper spelling.

Please also see
http://nginx.org/en/docs/http/request_processing.html#simple_php_site_configuration
for a working example.