LINUX.ORG.RU
решено ФорумAdmin

nginx rewrite

 , ,


0

1

Привет, ЛОР. Не могу разобрать со следующим тз. Иерархия директорий такая /var/www/site в папке site есть frontend и backend

если запрос идет на /admin - нужно что бы пользователь попадал в backend

если запрос идет просто / - соответственно веб сервер должен реврайтить на frontend

nginx version: nginx/1.6.2

server {
        listen 80;
        server_name .example.org;
        root /var/www/example.org;
        client_max_body_size 100m;

        access_log  /var/log/nginx/example-access.log;
        error_log  /var/log/nginx/example-error.log;

        charset utf-8;
        index index.php;

location ~* /uploads/.*.php$ {
        deny all;
        access_log off;
        log_not_found off;
        }

location  / {
        try_files $uri $uri/ /index.php;
        }
location ^~ /admin {
        rewrite ^/admin(.*)?$ /backend/web/$1 break;
}
location ~* \.php$ {
        fastcgi_index index.php;
        fastcgi_pass  unix:/var/run/php5-fpm.sock;
        include /etc/nginx/fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        }

location ~ /\. { deny all; access_log off; }

location = /favicon.ico { log_not_found off; }
}

как видно в конфиге, с отедльным локейшном /admin разобрался - работает. А вот с фронтендом все никак не получаеться. Спасибо большое заранее, хорошего дня.



Последнее исправление: rom100 (всего исправлений: 1)

Ответ на: комментарий от Deleted

No input file specified.

хотя во frontend лежит index.php

rom100
() автор топика
location  / {
        root /var/www/example.org/frontend
        try_files $uri $uri/ /index.php;
        }
location ^~ /admin {
        root /var/www/example.org/backend
        }
Deleted
()
Последнее исправление: MyLittleLoli (всего исправлений: 1)
Ответ на: комментарий от gssomi

согласно моему тз, это надо сделать именно с помощью location и rewrite. Извините, я думаю этот вариант мне не очень валидный.

rom100
() автор топика
Ответ на: комментарий от rom100

я какая то назойливая

server_name *.example.org;
......
location / {
    rewrite ^/admin(.*)?$ /backend/web/$1 break;
    try_files $uri $uri/ /path_to_frontend_index/index.php;
}
gssomi ★★
()
Ответ на: я какая то назойливая от gssomi

Совсем вы не назойливая! в логах реврайта не видно, не отрабатывает он. 404 отдает.

rom100
() автор топика

Пробовал такую конструкцию?

location  / {
        rewrite ^/admin(.*)?$ /backend/web/$1 last;
        rewrite ^/*$ /frontend/web/$1 last;
}
location ^~ /admin {
        try_files $uri $uri/ /index.php;
}
location ^~ /frontend {
        try_files $uri $uri/ /index.php;
}

expelled ★★
()
Ответ на: комментарий от expelled

Правило касательно backend отработало, а вот из frontend/web файлы так и не получил. В логах только get test.php, а должно быть /frontend/web/test.php

rom100
() автор топика
Ответ на: комментарий от rom100
        location / {
                rewrite ^/admin(.*)?$ /backend/web/$1 last;
                rewrite ^(.*)$ /frontend/web/$1 last;
        }

        location ^~ /backend/ {
                fastcgi_index index.php;
                fastcgi_pass  unix:/var/run/php5-fpm.sock;
                include /etc/nginx/fastcgi_params;
                fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }

        location ^~ /frontend/ {
                fastcgi_index index.php;
                fastcgi_pass  unix:/var/run/php5-fpm.sock;
                include /etc/nginx/fastcgi_params;
                fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
expelled ★★
()
4 марта 2017 г.
Ответ на: комментарий от rom100

и шо я вам скажу, там в исходниках ресурса заголовки были прописаны ....

rom100
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.