Nginx位置指令位于URL路径的前面

时间:2019-06-02 16:14:25

标签: nginx nginx-location

我正在位置指令“ / folder”中设置别名。别名指向“ / my / alias / path”。

当我导航到该位置内的网址时,例如“ mydomain.com/folder/destination”,指令名称位于请求的前面,该解析为 “ / my / alias / path / folder / destination”(不需要),而不是 “ / my / alias / path / destination”(期望)。

我可能丢失了一些东西,或者不太了解位置和别名的工作原理。

我已经尝试在location指令和别名中添加正斜杠,但这也不起作用。

这是我的位置指令:

public class Fibonacci
{
    public static void main(String[] args)
    {
        for(int i = 1; i <= 10; i++)
        {
            System.out.println("Fibonacci(" + i + ") = " + Fibonacci(i));
        }
    }

    public static long Fibonacci(int termNumber)
    {
        return (termNumber == 1) ? 0 : (termNumber == 2) ? 1 : Fibonacci(termNumber - 1) + Fibonacci(termNumber -2);
    }

}

这就是我在error.log中看到的内容

location ^~ /folder {
    alias /my/alias/path;

    index index.php index.html index.htm;

    location ~ ^/(README|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {
        deny all;
    }

    location ~ ^/(bin|SQL)/ {
         deny all;
    }

    location ~ \.php$ {
         include snippets/fastcgi-php.conf;
         fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /.well-known/acme-challenge {
         allow all;
    }
}

1 个答案:

答案 0 :(得分:1)

该错误与.php文件有关,很可能是php-fpm生成的,因为SCRIPT_FILENAME的值设置不正确。

snippets/fastcgi-php.conf内,您可能将SCRIPT_FILENAME设置为$document_root$fastcgi_script_name,这与alias指令不兼容。请改用$request_filename

例如:

location ^~ /folder {
    alias /my/alias/path;

    ...

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
}

通过将fastcgi_param语句放在include语句之后,新值将无提示地覆盖不正确的值。