Nginx 全部捕获配置文件

Nginx 全部捕获配置文件

放弃了,我会保留它以防将来有人为其他人提供解决方案。删除了 vbox,所以我无法再测试它们。我将改用 apache2。

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

例如,一个项目有以下分支,因此我检查它们:

/var/www/版本1.1/html

/var/www/版本1.2/html

/var/www/版本2.1/html

以下是配置文件的重要部分:

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;
}

编辑2 还尝试过:

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 包含,它会尝试从 var/www 而不是基本目录(例如 /var/www/version1.1/html)加载它们,因此显然这是行不通的,因为他们永远找不到这些文件。

编辑:

我想

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 并使其像其他版本一样工作,而不必每次都去编辑配置文件。

答案1

您应该使其与这个位置块一起工作:

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

location ~ \.php$然后除此之外您还需要使用正常 nginx 配置中的标准 PHP块。

try_files$uri首先尝试使用和变量来提供物理文件$uri/。如果找不到这样的文件,则尝试加载在.php末尾添加的文件名,最后如果仍未找到这样的文件,则返回 404。

您还需要确保您有一个正确的root声明。 就您而言,它应该是:

root /var/www;

可以是server同级,也可以是location /平级。

相关内容