nginx + fpm + subdirectory

У меня есть конфигурация nginx, которая выглядит так:

location ^~ /movies {
    alias /var/dp.cx/movies/current/public;
    fastcgi_index index.php;
    try_files $uri /movies/index.php;

    location ~* \.php {
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        include /etc/nginx/fastcgi_params;
    }
}

Это приложение Laravel, которое работает почти полностью из коробки. Однако с этой конфигурацией у меня есть несколько небольших проблем.

  • Нажатие на / movies вызывает 404. Нажатие на / movies / работает успешно.
  • Нажатие на один URL-адресов пагинации ( / movies / test? page = 2 ) не содержит информации из строки запроса.

Я не уверен, где я нашел эту конфигурацию, но, похоже, она наиболее близка к "рабочая" конфигурация, которую я когда-либо находил для nginx + fpm с URL-адресом подкаталога.

1
задан 5 October 2017 в 05:59
1 ответ

Нажатие / movies вызывает ошибку 404. Нажатие / movies / работает успешно.

Чтобы решить эту проблему на уровне сервера ... добавьте следующий блок местоположения рядом с существующим блоком местоположения для фильмов ...

location = /movies {
  return 301 $scheme://$host/movies/;
}

При нажатии на один из URL пагинации (/ movies / test? Page = 2) нет информация из строки запроса.

Это связано с тем, что строка try_files не передает строку запроса. Для его передачи можно использовать следующую директиву try_files ...

try_files $uri /movies/index.php$is_args$args;

Прямая цитата из http://nginx.org/en/docs/http/ngx_http_core_module.html . ..

$ is_args - «?» если в строке запроса есть аргументы, или пустая строка в противном случае.

0
ответ дан 4 December 2019 в 04:34

Теги

Похожие вопросы