Директива местоположения nginx добавляется к пути URL - PullRequest
1 голос
/ 02 июня 2019

Я устанавливаю псевдоним в директиве местоположения "/ folder".Псевдоним указывает на «/ my / alias / path».

Когда я перехожу к URL-адресу в пределах местоположения, например, «mydomain.com/folder/destination», перед запросом добавляется имя директивы, которое преобразуется в «/ my / alias / path / folder /destination "(нежелательно) вместо" / my / alias / path / destination "(желательно).

Возможно, я что-то упускаю или не совсем понимаю, как работают location и псевдонимы.

Я попытался добавить косую черту в директиву location и псевдоним, но это тоже не сработало.

Вот моя директива location:

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

Вот что я вижув моем error.log

/my/alias/path/folder/destination/index.php (No such file or directory)

1 Ответ

1 голос
/ 02 июня 2019

Ошибка относится к файлу .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, новое значение автоматически перезапишет неправильное значение.

...