Nginx的catch-allconfiguration文件

放弃这一点,我会留下来,以防有人在未来为别人解决问题。 删除的Vbox,所以我不能再testing它们了。 相反,我将使用apache2。

我想在我的开发机器上configuration我的nginx服务器,使其适用于所有匹配文件名的path。

例如,一个项目有以下分支,所以我检查一下:

/var/www/version1.1/html

/var/www/version1.2/html

/var/www/version2.1/html

这是configuration文件的重要部分:

root /var/www; # Add index.php to the list if you are using PHP index home.php index.php index.html index.htm index.nginx-debian.html; server_name _; location / { autoindex on; try_files $uri $uri/ =404; } location ~ version(.+)/html/\.php$ { alias $1/html; try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index home.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } 

EDIT2也试过了:

 location / { autoindex on; try_files $uri $uri/ $uri.php =404; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index home.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } 

问题:

如果我加载的location ~ \.php$只有服务器正确返回PHP文件。 然而,它不会加载CSS和JS包括在正确的path,它试图加载他们从var / www而不是基地目录说/var/www/version1.1/html所以显然这是行不通的,因为他们永远不会find文件。

编辑:

我想要

localhost/version1.1/html/register加载/var/www/version1.1/html/register.php

localhost/version1.1/html/css/main.css加载/var/www/version1.1/html/css/main.css

localhost/version1.2/html/register加载/var/www/version1.2/html/register.php

localhost/version1.2/html/css/main.css加载/var/www/version1.2/html/css/main.css

我也希望能够结帐说版本1.6,并使其像其他人一样工作,而不必每次都去编辑configuration文件。

你应该使它与这个位置块一起工作:

 location / { autoindex on; try_files $uri $uri/ $uri.php =404; } 

那么除了这个之外,你还需要使用普通nginxconfiguration中的标准PHP location ~ \.php$块。

try_files首先尝试使用$uri$uri/variables来提供物理文件。 如果没有find这样的文件,它会尝试加载一个.phpjoin结束,最后,如果没有find这样的文件,它将返回404。

你还需要确保你有一个正确的root语句。 你的情况应该是:

 root /var/www; 

它可以在server级别或location /级别上。