Pretty urls (docker nginx+php-fpm yii2 advanced)

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Pretty urls (docker nginx+php-fpm yii2 advanced)

Сообщение Demon_id » 2017.03.07, 18:27

Никак не могу настроить nginx для yii2 advanced template.
Не работают красивые урлы в бэкенде.
Вот конфиг nginx:

Код: Выделить всё

server {

       set $project_root /var/www/fantasy-datacenter;
       charset utf-8;
       client_max_body_size 128M;

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

       server_name fantasy-datacenter.lh;
       root         $project_root/frontend/web/;
       index       index.php;

       access_log  /var/www/fantasy-datacenter/access.log;
       error_log   /var/www/fantasy-datacenter/error.log;

    location ^~ /backend {
        rewrite ^/backend(.*)$ /backend/web$1 last;
    }

    location ^~ /backend/web {
        root $project_root;

        # uncomment the following, if you want to enable speaking URL in the backend
        #try_files $uri $uri/ /index.php$is_args$args;

        location ~ /\.(ht|svn|git) {
            deny all;
        }

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

       location / {
           # Redirect everything that isn't a real file to index.php
           try_files $uri $uri/ /index.php?$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;
       location ~ \.php$ {
           include fastcgi_params;
           fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
           fastcgi_pass php-fantasy-datacenter:9000;
           #fastcgi_pass unix:/var/run/php5-fpm.sock;
           try_files $uri =404;
       }

       location ~ /\.(ht|svn|git) {
           deny all;
       }
   }
вот конфиг приложения в /backend/config/main.php

Код: Выделить всё

<?php
$params = array_merge(
    require(__DIR__ . '/../../common/config/params.php'),
    require(__DIR__ . '/../../common/config/params-local.php'),
    require(__DIR__ . '/params.php'),
    require(__DIR__ . '/params-local.php')
);

return [
    'id' => 'app-backend',
    'basePath' => dirname(__DIR__),
    'controllerNamespace' => 'backend\controllers',
    'bootstrap' => ['log'],
    'modules' => [
    ],
    'components' => [
        'user' => [
            'identityClass' => 'common\models\User',
            'enableAutoLogin' => true,
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
        'assetManager' => [
            'class' => 'yii\web\AssetManager',
            'bundles' => [
                'insolita\wgadminlte\ExtAdminlteAsset' => [
                    'depends' => [
                        'yii\web\YiiAsset',
                        'dmstr\web\AdminLteAsset'
                    ]
                ],
                'insolita\wgadminlte\JCookieAsset' => [
                    'sourcePath' => '@bower/jquery-cookie',
                    'depends' => [
                        'yii\web\YiiAsset',
                        'dmstr\web\AdminLteAsset'
                    ],
                ],
                'dmstr\web\AdminLteAsset' => [
                    'skin' => 'skin-black',
                ],
            ]
        ],
        'request' => [
            'baseUrl' => '/backend',
            'csrfParam' => '_backend_csrf',
        ],
	    'urlManager' => [
		    'class' => 'yii\web\UrlManager',
		    'enablePrettyUrl' => true,
		    'showScriptName' => false,
		    'rules' => [
		    ],
	    ],
        'frontUrlManager' => require(__DIR__ . '/../../frontend/config/url_manager.php'),
    ],
    'params' => $params,
];
убираю из конфига секцию urlManager и всё работает на некрасивых урлах. Возвращаю обратно и всё - 404.
читал вот это - http://rmcreative.ru/blog/post/nginx--p ... asivye-url
менял настройку, ничего не помогает.
Что делать? У нас уже пол команды убило на это кучу времени. На апаче всё работало.

Аватара пользователя
nihaha
Сообщения: 95
Зарегистрирован: 2017.02.12, 13:30

Re: Pretty urls (docker nginx+php-fpm yii2 advanced)

Сообщение nihaha » 2017.03.08, 01:33

У меня такая же связка (на двух разных серверах) и работает все отлично. Конфиг nginx ну практически такой же, как у Вас, за исключением секции бэкенда, у меня шаблон бейсик.
Возможно, проблема не в nginx? Возможно, стоит прописать все же правила роутинга.

Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: Pretty urls (docker nginx+php-fpm yii2 advanced)

Сообщение Demon_id » 2017.03.09, 12:00

nihaha писал(а):
2017.03.08, 01:33
У меня такая же связка (на двух разных серверах) и работает все отлично. Конфиг nginx ну практически такой же, как у Вас, за исключением секции бэкенда, у меня шаблон бейсик.
Возможно, проблема не в nginx? Возможно, стоит прописать все же правила роутинга.
дело в шаблоне. даже у меня на advanced красивые урлы на фронтенде работают нормально. проблема с бекендом.

dmg
Сообщения: 671
Зарегистрирован: 2012.10.15, 03:09

Re: Pretty urls (docker nginx+php-fpm yii2 advanced)

Сообщение dmg » 2017.03.09, 13:11

Это делали ?

Код: Выделить всё

        # uncomment the following, if you want to enable speaking URL in the backend
        #try_files $uri $uri/ /index.php$is_args$args;

Ответить