Possible bug in "root" declaration?
Igor Sysoev
is at rambler-co.ru
Thu May 28 18:13:36 MSD 2009
On Thu, May 28, 2009 at 02:51:11PM +0100, Systems Maintenance wrote:
> Below is part of a server block for a particular vhost:
>
> server {
> server_name mysite.tld ~^.+\.mysite\.tld$;
>
> set $base /var/www/mysite;
>
> if ( $host ~* "^(x|y|z)\.mysite\.tld$" ){
> set $files misc;
> }
>
> if ( $host ~* "^(admin)\.mysite\.tld$" ){
> set $files admin;
> }
>
> if ( $host = "mysite.tld" ){
> set $files home;
> }
This is not effective way. It's better to use map:
map $host $files {
default home;
mysite.tld home;
admin.mysite.tld admin;
x.mysite.tld misc;
y.mysite.tld misc;
z.mysite.tld misc;
}
> root $base/$files/www;
> error_page 404 $base/errors/404.html;
>
> location / {
> try_files $uri @webapp;
> }
>
> location @webapp {
> rewrite ^/([\w\d]+)/([\w\d]+)(.*)? /index.php/$1/$2?_params=$3 last;
> }
>
> location ~ \.php($|/) {
> set $script $uri;
> set $path_info "";
>
> if ($uri ~ "^(.+\.php)(/.+)") {
> set $script $1;
> set $path_info $2;
> }
>
> fastcgi_pass unix:/tmp/php-socket;
> include conf/fastcgi_params;
> fastcgi_intercept_errors on;
> fastcgi_param SCRIPT_FILENAME $base/$interface$script;
> fastcgi_param PATH_INFO $path_info;
> fastcgi_index index.php;
> }
>
> }
>
> What I'm seeing in my error log is that the error_page its trying to
> return is: /var/www/mysite/var/www/mysite/errors/404.html instead of the
> expected /var/www/mysite/errors/404.html
error_page uses URI, but not file:
error_page 404 /errors/404.html;
location = /error/404.html {
set /var/www/mysite;
}
> I've also tried (with no success):
>
> error_page 404 @notfound;
> location @notfound {
> root $base/errors;
> error_page 404 404.html;
> index 404.html;
> }
This is not valid way.
> Here's my version information, if it helps:
>
> # nginx -V
> nginx version: nginx/0.7.55
> built by gcc 4.1.2 20080704 (Red Hat 4.1.2-44)
> configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx
> --conf-path=/etc/nginx/nginx.conf
> --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid
> --with-rtsig_module --with-select_module --with-poll_module
> --with-http_ssl_module --with-http_stub_status_module
> --with-http_gzip_static_module --with-http_flv_module
> --with-http_random_index_module
> --http-log-path=/var/log/nginx/access.log
> --with-md5=/usr/lib --with-sha1=/usr/lib
--with-md5- and --with-sha1= are required to build theses libraries
from sources.
> --without-mail_pop3_module
> --without-mail_imap_module --without-mail_smtp_module
mail modules are not built by default.
> --add-module=nginx_circle_gif-0.1.3
--
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list