Проблема с Yii urlManager (ЧПУ) + Nginx

Обсуждение общих вопросов связанных с программой
socode
Сообщения: 4
Зарегистрирован:
17 фев 2014, 17:38
Откуда: Самара
Контактная информация:

Проблема с Yii urlManager (ЧПУ) + Nginx

socode » 17 фев 2014, 18:42

Есть проект на Yii, был написан и работал под Apache, но решил я перебраться на Open Server и Nginx, и столкнулся со следующей проблемой, не работает ЧПУ, выдаёт 404 ошибку. Я долго и упорно гуглил и до последнего не хотел создавать эту тему, но видимо выхода нет. У меня не получается настроить Nginx. Настраивал по руководству, настраивал по мануалу из интернета, в частности этому

Я с Nginx никогда не работал, помогите мне разобраться пожалуйста.

У меня пара вопросов:

1) Все настройки над Nginx производятся в одном единственном файле Nginx.conf ? Или в нём хранятся основные настройки, а дополнительные, для проекта производятся в каких-то других файлах?

2) Существует ли конфиги на манер Apache? .htaccess или всё настраивается в одном файле?

P.S. Если есть у кого-то рабочий вариант настроек, поделитесь пожалуйста!
socode
Сообщения: 4
Зарегистрирован:
17 фев 2014, 17:38
Откуда: Самара
Контактная информация:

socode » 19 фев 2014, 00:26

Ребят, что, совсем никаких мыслей? :(
Аватара пользователя
Максим
Сообщения: 5415
Зарегистрирован:
11 дек 2010, 20:29
Контактная информация:

Максим » 19 фев 2014, 01:24

socode писал(а):Все настройки над Nginx производятся в одном единственном файле Nginx.conf ? Или в нём хранятся основные настройки, а дополнительные, для проекта производятся в каких-то других файлах?
Да, для проекта настройки производятся в отдельном файле который нужно создать. Это описано в руководстве (раздел вопросов и ответов). Вы его читали? Основные файлы-шаблоны настроек ни хоста ни сервера вам трогать не следует.
socode писал(а):Существует ли конфиги на манер Apache? .htaccess или всё настраивается в одном файле?
Нет, автор Nginx намеренно не делает аналог файла .htaccess для Nginx. Вот такая вот у него пуля в голове. Так что в Nginx такого нет, как в Apache, и всё нужно прописывать прямо в конфиге.
socode писал(а):P.S. Если есть у кого-то рабочий вариант настроек, поделитесь пожалуйста!
Примеров конфига Yii под Nignx я думаю должна быть куча, ищите в Google.
socode
Сообщения: 4
Зарегистрирован:
17 фев 2014, 17:38
Откуда: Самара
Контактная информация:

socode » 19 фев 2014, 07:37

Максим писал(а):... настройки производятся в отдельном файле ... описано в руководстве (раздел вопросов и ответов).
Спасибо, прочитал, создал отдельный файл конфигурации, добавил туда настройки и всё, ничего не изменилось, сервер просто не запускается. Лог Nginx-а пуст.
Максим писал(а):Примеров конфига Yii под Nignx я думаю должна быть куча, ищите в Google.
В этом то и проблема, что тем с настройками много, все они в целом одинаковые, но увы они не оказывают должного эффекта. У меня либо запускается сервер, но по ссылкам вида /login и т.п. выдаёт 404, либо просто не запускается.

Я прикрепил свой конфиг к посту.

P.S. Домен созданный для работы на локалке Nation.ru
Вложения
Nginx-1.4.4_vhost.rar
Конфиг
(1.43 КБ) 231 скачивание
Аватара пользователя
Максим
Сообщения: 5415
Зарегистрирован:
11 дек 2010, 20:29
Контактная информация:

Максим » 20 фев 2014, 20:21

Не совсем понимаю, вы хотите чтобы я за вас нашел или написал нужные правила под Nginx? Так нет, я не знаком с Yii и какие ему нужны правила не знаю. Что касается ошибки 404, то немудрено, особенно при использовании подобных правил реврайта (из представленного вами конфига):
	location /nation.ru/ {
		try_files $uri $uri/ /nation.ru/index.php?$query_string;
	}
socode
Сообщения: 4
Зарегистрирован:
17 фев 2014, 17:38
Откуда: Самара
Контактная информация:

socode » 26 фев 2014, 16:45

Ну с Божей помощью, методом тыка и мата вроде настроил.
Спешу поделиться решением с народом, быть может кому-то окажется полезным.

Вот этот кусок кода:
location /nation.ru {
    try_files $uri $uri/ /nation.ru/index.php?$query_string;
}
или немного аналогичный вариант:
location /%host% %aliases% {
    try_files $uri $uri/ /%host% %aliases%/index.php?$query_string;
}
О котором говорится вот в этом мануале, указывать не нужно. Все настройки нужно производить в location /
location / {
    root   "%hostdir%";
    index  index.php index.html index.htm;
    try_files $uri $uri/ /index.php?$query_string;
}
И да, в блоке
location ~ \.php$ {
    include fastcgi_params;
}
в случае с Open Server(ом) указывать не нужно! Сервер перестаёт запускаться.

P.S. Прикрепляю рабочий конфиг. ;)
P.P.S. Почему не заработал метод указанный в мануале по Yii, я не знаю. Буду благодарен тому кто растолкует!
Вложения
Nginx-1.4.4_vhost.rar
(5.36 КБ) 557 скачиваний
Ответить