Как настроить NGNIX + PHP-FPM для рабоы с Yii2?

Доброго времени суток, не могу заставить сервер обрабатывать запросы такого типа website.ru/1 website.ru/2 получаю ошибку 404 Not Found Переход на индекс страницу website.ru обрабатывается корректно. Как заставить делать редирект на index.php который находится в корневой директории yii2 фреймворка при переходе на website.ru/1 website.ru/2 ?

Конфиг сайта из ISPmanager:
server {
server_name website.ru www.website.ru;
charset UTF-8;
index index.php;
disable_symlinks if_not_owner from=$root_path;
include /etc/nginx/vhosts-includes/*.conf;
include /etc/nginx/vhosts-resources/website.ru/*.conf;
set $root_path /var/www/www-root/data/www/website.ru;
root $root_path;
location / {
location ~ [^/]\.ph(p\d*|tml)$ {
try_files /does_not_exists @php;
}
}
location @php {
fastcgi_index index.php;
fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f webmaster@website.ru";
fastcgi_pass unix:/var/www/php-fpm/www-root.sock;
fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
try_files $uri =404;
include fastcgi_params;
}
access_log off;
error_log /dev/null crit;
listen ххх.ххх.ххх.ххх:80;
}
  • Вопрос задан
  • 2336 просмотров
Пригласить эксперта
Ответы на вопрос 2
@spaceatmoon
У тебя root неправильно настроен. Вообще вот пример конфига под yii2.

Если у тебя всё равно не зайдет. Попробуй поиграться с этой строчкой. Под каждого пользователя выдается свой порт под fpm. Точнее в интернете почитаешь, я не сильно шарю в этом.
fastcgi_pass 127.0.0.1:9000;

https://github.com/yiisoft/yii2/blob/master/docs/g...
server {
    charset utf-8;
    client_max_body_size 128M;

    listen 80; ## listen for ipv4
    #listen [::]:80 default_server ipv6only=on; ## listen for ipv6

    server_name mysite.test;
    root        /path/to/basic/web;
    index       index.php;

    access_log  /path/to/basic/log/access.log;
    error_log   /path/to/basic/log/error.log;

    location / {
        # Redirect everything that isn't a real file to index.php
        try_files $uri $uri/ /index.php$is_args$args;
    }

    # uncomment to avoid processing of calls to non-existing static files by Yii
    #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
    #    try_files $uri =404;
    #}
    #error_page 404 /404.html;

    # deny accessing php files for the /assets directory
    location ~ ^/assets/.*\.php$ {
        deny all;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass 127.0.0.1:9000;
        #fastcgi_pass unix:/var/run/php5-fpm.sock;
        try_files $uri =404;
    }

    location ~* /\. {
        deny all;
    }
}
Ответ написан
@Sayo Автор вопроса
Не без помощи но удалось решить проблему добавлением таких строк в дефолтный конфиг ISPManager (ngnix).

server {

	server_name website.ru www.website.ru;
	charset UTF-8;
	index index.php;
	disable_symlinks if_not_owner from=$root_path;
	include /etc/nginx/vhosts-includes/*.conf;
	include /etc/nginx/vhosts-resources/website.ru/*.conf;
	set $root_path /var/www/www-root/data/www/website.ru;
	root $root_path;

	# < Добавлено (REDIRECT_URL defined)
	set $redirect_url $uri;
	# >

	location / {

		location ~ [^/]\.ph(p\d*|tml)$ {

			try_files /does_not_exists @php;
		}
		# < Добавлено
		location / {

			try_files $uri/ $uri /index.php?$args;
		}
		# >
	}
	location @php {

		fastcgi_index index.php;
		fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f webmaster@website.ru";
		fastcgi_pass unix:/var/www/php-fpm/www-root.sock;
		fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
		try_files $uri =404;
		include fastcgi_params;

		# < Добавлено
		fastcgi_param REDIRECT_URL $redirect_url;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		# >
	}
	access_log off;
	error_log /dev/null crit;
	listen ххх.ххх.ххх.ххх:80;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы