Задать вопрос
@drunken_ikarus

Как для yii2 advanced правильно настроить nginx?

Здравствуйте!

Шаблон yii2 advanced:
backend: /var/www/site.ru/advanced/backend/
frontend: /var/www/site.ru/advanced/frontend/

Доступ на backend должен быть по корню сайта: https://site.ru
На frontend так: https://site.ru/public

Nginx как то настроил и бэкенд работает нормально, проблема на фронте - главная страница (https://site.ru/public/) открывается, а вот если перейти дальше, например https://site.ru/public/site/about то почему то случается 302 редирект на бэкенд.

конфиг nginx сейчас такой (настоящий домен конечно заменен):

server {
    server_name site.ru www.site.ru;
    charset off;
    index index.php index.html;
    disable_symlinks if_not_owner from=$root_path;
    include /etc/nginx/vhosts-includes/*.conf;
    include /etc/nginx/vhosts-resources/site.ru/*.conf;
    include /etc/nginx/users-resources/www-root/*.conf;
    access_log /var/www/httpd-logs/site.ru.access.log;
    error_log /var/www/httpd-logs/site.ru.error.log notice;
    ssi on;
    
    set $root_path /var/www/site.ru/advanced/backend/web;
    root $root_path;
    
    gzip on;
    gzip_comp_level 5;
    gzip_disable "msie6";
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
    
    # Location для backend (все остальное)
    location / {
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
        
        location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|webp|woff|woff2)$ {
            expires 24h;
        }
        # ЧПУ для backend 
        try_files $uri $uri/ /index.php?$args;
    }
    
    # Location для frontend (/public)
    location /public {
        alias /var/www/site.ru/advanced/frontend/web;
        index index.php;
        
        # Статические файлы
        location ~* \.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|webp|woff|woff2)$ {
            expires 24h;
            try_files $uri =404;
        }
        
        # PHP файлы
        location ~ \.php$ {
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_index index.php;
            fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f webmaster@site.ru";
            fastcgi_pass unix:/var/www/php-fpm/1.sock;
            try_files $uri =404;
        }
        
        # ЧПУ для frontend
        try_files $uri $uri/ /public/index.php?$args;
    }

    location @php {
        include /etc/nginx/vhosts-resources/site.ru/dynamic/*.conf;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f webmaster@site.ru";
        fastcgi_pass unix:/var/www/php-fpm/1.sock;
        fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
        try_files $uri =404;
        include fastcgi_params;
    }
          
    listen x.x.x.x:443 ssl;
    ssl_certificate "/var/www/httpd-cert/www-root/site.ru_le2.crt";
    ssl_certificate_key "/var/www/httpd-cert/www-root/site.ru_le2.key";
    ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    add_header Strict-Transport-Security "max-age=31536000;";
    ssl_dhparam /etc/ssl/certs/dhparam4096.pem;
}


Или проблема не в nginx, а в конфиге yii?

/backend/config/main.php:
return [
....
'id' => 'app-backend',
'homeUrl' => 'https://site.ru',
...
'aliases' => [
        '@baseurl' => 'https://site.ru/'
    ],
...
'components' => [
        'request' => [
            'csrfParam' => '_csrf-backend',
            'baseurl' => '',
        ],
       'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
        ]
..


/frontend/config/main.php:
return [
....
'id' => 'app-frontend',
'homeUrl' => 'https://site.ru/public',
...
'aliases' => [
        '@baseurl' => 'https://site.ru/public/'
    ],
...
'components' => [
        'request' => [
            'csrfParam' => '_csrf-frontend',
            'baseUrl' => '/public',
        ],
       'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                '' => 'site/index',
                'index' => 'site/index',
            ],
        ],
...
  • Вопрос задан
  • 33 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@drunken_ikarus Автор вопроса
Сам решил, вопрос закрыт, если кому интересно:
nginx.conf
server {
    server_name site.ru www.site.ru;
    charset off;
    index index.php index.html;
    disable_symlinks if_not_owner from=$root_path;
    include /etc/nginx/vhosts-includes/*.conf;
    include /etc/nginx/vhosts-resources/site.ru/*.conf;
    include /etc/nginx/users-resources/www-root/*.conf;
    access_log /var/www/httpd-logs/site.ru.access.log;
    error_log /var/www/httpd-logs/site.ru.error.log notice;
    ssi on;
    
    #set $root_path /var/www/www-root/data/www/site.ru/advanced/backend/web;
    set $root_path /var/www/site.ru/advanced/backend/web;
    root $root_path;
    
    gzip on;
    gzip_comp_level 5;
    gzip_disable "msie6";
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
    
    # Backend - основной домен
    location / {
        root /var/www/site.ru/advanced/backend/web;
        index index.php;
        
        try_files $uri $uri/ /index.php?$args;
        
        location ~ \.php$ {
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_pass unix:/var/www/php-fpm/1.sock;
        }
    }

    # Frontend - /public
    location ^~ /public {
        alias /var/www/site.ru/advanced/frontend/web;
        index index.php;
        
        if (!-e $request_filename) {
            rewrite ^/public/(.*)$ /public/index.php?$args last;
        }
        
        location ~ \.php$ {
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_pass unix:/var/www/php-fpm/1.sock;
        }
    }
    
   
    listen x.x.x.x:443 ssl;
    ssl_certificate "/var/www/httpd-cert/www-root/site.ru_le2.crt";
    ssl_certificate_key "/var/www/httpd-cert/www-root/site.ru_le2.key";
    ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    add_header Strict-Transport-Security "max-age=31536000;";
    ssl_dhparam /etc/ssl/certs/dhparam4096.pem;
}


ну и из конфигов yii нафиг убрал homeUrl и @baseurl (не знаю повлияло ли на решение)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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