yii2 advanced, nginx и frontend -> / , backend -> /admin на одном домене
-
- Сообщения: 92
- Зарегистрирован: 2015.06.15, 18:36
yii2 advanced, nginx и frontend -> / , backend -> /admin на одном домене
Доброго времени суток!
появилась задача завести backend через имя_хоста/admin
нашел решение, которое есть тут https://github.com/mickgeek/yii2-advanc ... nginx.conf
сервер Debian 7 , php-fpm , nginx 1.2.1
при попытке использовать данную конфигурацию к URL наращивается путь /frontend/web/ , что не очень подходит мне. Пробуя отредактировать конфигурацию потерпел фиаско - корректно работает только одно из двух. Прошу помощи у сообщества, возможно кто-то поделится реализованной конфигурацией, где при включенном URLManager '/' => 'site/index' выглядит правильнее, а не site.ru/frontend/web/ и при адресе site.ru/admin отрабатывает /backend/web/
ps. до этого все работало хорошо и тут потребовалась "админка", но стоило сменить в конфиге server->root как в ссылке выше (и даже скопировав конфиг и поправив пути) все сразу поломалось.
pps. Yii2->backend/config/main.php : BaseURL => '/admin' прописан.
появилась задача завести backend через имя_хоста/admin
нашел решение, которое есть тут https://github.com/mickgeek/yii2-advanc ... nginx.conf
сервер Debian 7 , php-fpm , nginx 1.2.1
при попытке использовать данную конфигурацию к URL наращивается путь /frontend/web/ , что не очень подходит мне. Пробуя отредактировать конфигурацию потерпел фиаско - корректно работает только одно из двух. Прошу помощи у сообщества, возможно кто-то поделится реализованной конфигурацией, где при включенном URLManager '/' => 'site/index' выглядит правильнее, а не site.ru/frontend/web/ и при адресе site.ru/admin отрабатывает /backend/web/
ps. до этого все работало хорошо и тут потребовалась "админка", но стоило сменить в конфиге server->root как в ссылке выше (и даже скопировав конфиг и поправив пути) все сразу поломалось.
pps. Yii2->backend/config/main.php : BaseURL => '/admin' прописан.
Последний раз редактировалось skvarovski 2016.04.01, 15:29, всего редактировалось 1 раз.
Re: yii2 advanced, nginx и /admin
Я на своем тестовом OpenServer кстати с Nginx 1.9 воспользовался этим https://github.com/samdark/yii2-cookboo ... ty-urls.md советом, в кониг сервера не лез вообще, сделал только то что надо было сделать на фрейме, все завелось и работает норм.
-
- Сообщения: 92
- Зарегистрирован: 2015.06.15, 18:36
Re: yii2 advanced, nginx и /admin
в том то и дело, мне это тоже далось легко, а когда на один хост пытаешься завести backend и frontend то лезть в конфиг сервера нужноLAN_ART писал(а):Я на своем тестовом OpenServer кстати с Nginx 1.9 воспользовался этим https://github.com/samdark/yii2-cookboo ... ty-urls.md советом, в кониг сервера не лез вообще, сделал только то что надо было сделать на фрейме, все завелось и работает норм.
-
- Сообщения: 92
- Зарегистрирован: 2015.06.15, 18:36
Re: yii2 advanced, nginx и /admin
в документации сказано о симлинках, но они у меня не завелись почему-то.
yii2 advanced nginx и /admin
Доброго дня
Ребят такой вопрос, есть сервер биллинга 10.0.0.1, и есть сервер nginx 10.0.0.2, вопрос в следующем, как сделать так, чтобы пользователи могли сделать 1 соединения с 1 IP к биллингу через nginx ?
Ребят такой вопрос, есть сервер биллинга 10.0.0.1, и есть сервер nginx 10.0.0.2, вопрос в следующем, как сделать так, чтобы пользователи могли сделать 1 соединения с 1 IP к биллингу через nginx ?
-
- Сообщения: 92
- Зарегистрирован: 2015.06.15, 18:36
Re: yii2 advanced, nginx и /admin
ответ на вопрос выше : используйте ngixn в режиме прокси
-
- Сообщения: 92
- Зарегистрирован: 2015.06.15, 18:36
Re: yii2 advanced, nginx и /admin
ну что же, накодил своё решение...
в первую очередь курил мануалы по yii2 где было 2-а варианта (с симлинками и hard-way) , первый не заработал вообще. второй вариант либо 404 либо одна часть..
попробовал по ссылке в самой начале топика - завелась, но хотелось бы скрыть лишние пути, в итоге все упиралось незнание конфигурации nginx....
последний вариант который у меня завелся более менее - это создание папки admin в ...frontend/web/ и перекидыванием туда содержимого /backend/web/* с переписыванием относительных путей. в принципе это решение завелось, конфиг ngixn'a прикладываю..
На этом все работает, но мне все равно интересно найти вариант, как заставить работать два location на одном домене. без вываливания дополнительных путей типа frondend/web. Понимаю, что это постоянно возникает, но парни, почему мануал у меня не завёлся как следует? что утаили там в location у nginx? http://www.yiiframework.com/wiki/799/yi ... che-nginx/
в первую очередь курил мануалы по yii2 где было 2-а варианта (с симлинками и hard-way) , первый не заработал вообще. второй вариант либо 404 либо одна часть..
попробовал по ссылке в самой начале топика - завелась, но хотелось бы скрыть лишние пути, в итоге все упиралось незнание конфигурации nginx....
последний вариант который у меня завелся более менее - это создание папки admin в ...frontend/web/ и перекидыванием туда содержимого /backend/web/* с переписыванием относительных путей. в принципе это решение завелось, конфиг ngixn'a прикладываю..
Код: Выделить всё
server {
listen 80;
server_name www.mysitec.ru;
return 301 http://mysite.ru$request_uri;
}
server {
set $project_root /var/www/vhost/mysite2.loc;
set $fcgi_server 127.0.0.1:9000;
charset utf-8;
client_max_body_size 128M;
listen 80;
server_name mysite.ru;
root $project_root/frontend/web;
index index.php;
access_log /var/log/nginx/mysite2.loc.access.log combined;
error_log /var/log/nginx/mysite2.loc.error.log warn;
location / {
try_files $uri $uri/ /index.php?$args;
}
location /admin {
try_files $uri $uri/ /admin/index.php?$args;
}
location ~* \.php$ {
try_files $uri =404;
fastcgi_pass $fcgi_server;
include fastcgi_params;
}
location ~* \.(htaccess|htpasswd|svn|git) {
deny all;
}
}
На этом все работает, но мне все равно интересно найти вариант, как заставить работать два location на одном домене. без вываливания дополнительных путей типа frondend/web. Понимаю, что это постоянно возникает, но парни, почему мануал у меня не завёлся как следует? что утаили там в location у nginx? http://www.yiiframework.com/wiki/799/yi ... che-nginx/
Re: yii2 advanced, nginx и frontend -> / , backend -> /admin на одном домене
скопипастил из инструкции с небольшим дополненениями.
и не забыть поправить конфиг
Код: Выделить всё
server {
set $project_root /var/www/kkk;
set $fcgi_server 127.0.0.1:9000;
listen *:80;
server_name kkk;
access_log /var/www/log/kkk.access.log main;
error_log /var/www/log/kkk.error.log error;
root $project_root/frontend/web;
set $yii_bootstrap "index.php";
charset utf-8;
location ^~ /backend {
rewrite ^/backend(.*)$ /backend/web$1 last;
}
location ^~ /backend/web {
root $project_root;
index index.php; # !!!
# 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$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
#позволяем yii перехватывать запросы к несуществующим PHP-файлам
set $fsn /$yii_bootstrap;
if (-f $document_root$fastcgi_script_name){
set $fsn $fastcgi_script_name;
}
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fsn; # !!!
#PATH_INFO и PATH_TRANSLATED могут быть опущены, но стандарт RFC 3875 определяет для CGI
#fastcgi_param PATH_INFO $fastcgi_path_info;
#fastcgi_param PATH_TRANSLATED $document_root$fsn;
}
}
location / {
index $yii_bootstrap;
try_files $uri $uri/ /$yii_bootstrap?$args;
}
#отключаем обработку запросов фреймворком к несуществующим статичным файлам
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}
location ~ \.php {
fastcgi_split_path_info ^(.+\.php)(.*)$;
#позволяем yii перехватывать запросы к несуществующим PHP-файлам
set $fsn /$yii_bootstrap;
if (-f $document_root$fastcgi_script_name){
set $fsn $fastcgi_script_name;
}
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fsn;
#PATH_INFO и PATH_TRANSLATED могут быть опущены, но стандарт RFC 3875 определяет для CGI
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fsn;
}
location ~ /\.ht {
deny all;
}
}
Код: Выделить всё
'components' => [
'request'=>[
'baseUrl'=>'/backend',
],
'urlManager'=>[
'scriptUrl'=>'/backend/index.php',
],
-
- Сообщения: 92
- Зарегистрирован: 2015.06.15, 18:36
Re: yii2 advanced, nginx и frontend -> / , backend -> /admin на одном домене
скажите ,а при этом конфиге дефолтный URI site/index как выглядит? как site.ru/site/index или как site.ru/frontend/web/site/index ?
Re: yii2 advanced, nginx и frontend -> / , backend -> /admin на одном домене
То, что Вы привели в ссылке, работает! Ничего не прибавляется, все работает как надо. Урл в адресной строке нормальный http://site.dev:8080/category или http://site.dev:8080/melody или http://site.dev:8080/admin или http://site.dev:8080/admin/dashboard все эти ссылки нормальны.skvarovski писал(а): нашел решение, которое есть тут https://github.com/mickgeek/yii2-advanc ... nginx.conf
сервер Debian 7 , php-fpm , nginx 1.2.1
при попытке использовать данную конфигурацию к URL наращивается путь /frontend/web/ , что не очень подходит мне.
Хотел бы напомнить, что нужно внести некоторые изменения в конфиги проекта как описано в документации http://www.yiiframework.com/wiki/799/yi ... che-nginx/
Re: yii2 advanced, nginx и frontend -> / , backend -> /admin на одном домене
Я сделал так, нашел где-то в инете
Все открывается на одном домене.
.htaccess
в конфиге frontend
в конфиге backend
Все открывается на одном домене.
.htaccess
Код: Выделить всё
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
# if request begins with /admin remove admin and ad /backend/web/
RewriteCond %{REQUEST_URI} ^/admin
RewriteRule ^admin\/?(.*) /backend/web/$1
# other requests add /frontend/web/$1
RewriteCond %{REQUEST_URI} !^/(frontend/web|backend/web|admin)
RewriteRule (.*) /frontend/web/$1
# if frontend request
RewriteCond %{REQUEST_URI} ^/frontend/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /frontend/web/index.php
# if backend request
RewriteCond %{REQUEST_URI} ^/backend/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /backend/web/index.php
Код: Выделить всё
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'' => 'site/index',
'<action>'=>'site/<action>',
]
],
'assetManager' => [
'basePath' => '@webroot/assets',
'baseUrl' => '@web/assets'
],
'request' => [
'baseUrl' => ''
]
Код: Выделить всё
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'' => 'site/index',
'<action>'=>'site/<action>',
],
],
'assetManager' => [
'basePath' => '@webroot/assets',
'baseUrl' => '@web/assets'
],
'request' => [
'baseUrl' => '/admin'
]
Re: yii2 advanced, nginx и frontend -> / , backend -> /admin на одном домене
Это хорошо, но смотрите на название топика, здесь речь идет о настройках nginx, а не apache.thecoder писал(а):Я сделал так, нашел где-то в инете
Все открывается на одном домене.
.htaccess
...
Все-таки в этом решении есть небольшая проблема: файлы .php отдаются как есть, т.е. запрос вида http://somesite.dev/index.php отдаст файл index.php на скачивание. Так что проверьте у себя, прежде, чем попробовать эту конфигуру.skvarovski писал(а):нашел решение, которое есть тут https://github.com/mickgeek/yii2-advanc ... nginx.conf
сервер Debian 7 , php-fpm , nginx 1.2.1
при попытке использовать данную конфигурацию к URL наращивается путь /frontend/web/ , что не очень подходит мне.
-
- Сообщения: 957
- Зарегистрирован: 2014.05.31, 20:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: yii2 advanced, nginx и frontend -> / , backend -> /admin на одном домене
RusNimex, зависит от версии установленного nginx. Начиная с 1.8.1 данный конфиг не работает должным образом, так как:
Как будет свободное время (с этим сейчас сложно), попробую исправить проблему.Bugfix: the "try_files" directive inside a nested location given by a regular expression worked incorrectly if the "alias" directive was used in the outer location.
Re: yii2 advanced, nginx и frontend -> / , backend -> /admin на одном домене
Вот что у нас получилось:
Теперь наш backend откликается на хттп://site.dev/bf/
Код: Выделить всё
server {
listen 80;
server_name site.dev www.site.dev;
access_log /var/www/site.dev/log/nginx/access.log bizon;
error_log /var/www/site.dev/log/nginx/error.log;
client_max_body_size 10m;
index index.php index.html index.htm;
location /uploads/ {
root /var/www/site.dev/data/app;
expires max;
}
location /bf/ {
alias /var/www/site.dev/data/app/backend/web/;
# added "/bf/": https://trac.nginx.org/nginx/ticket/97
try_files $uri /bf//bf/index.php$is_args$args;
location ~* ^.+\.(css|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|html|swf)$ {
expires max;
access_log off;
}
location ~ \.php$ {
# added "/bf/": https://trac.nginx.org/nginx/ticket/97
try_files $uri /bf//bf/index.php$is_args$args;
fastcgi_pass unix:/var/run/php-fpm/site.dev.sock;
fastcgi_index index.php;
fastcgi_split_path_info ^/bf(/.+\.php)(.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
location / {
root /var/www/site.dev/data/app/frontend/web;
try_files $uri /index.php$is_args$args;
location ~* ^.+\.(css|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|html|swf)$ {
expires max;
access_log off;
}
location ~ \.php$ {
try_files $uri /index.php$is_args$args;
fastcgi_pass unix:/var/run/php-fpm/site.dev.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
}
Re: yii2 advanced, nginx и frontend -> / , backend -> /admin на одном домене
В конфиге nginx:
Если еще апач в бекенде, то еще в .htaccess в корне сайта:
Мудрить там особо и нечего...
Код: Выделить всё
location / {
try_files $uri /frontend/web/index.php?$args;
}
location /admin {
try_files $uri /backend/web/index.php?$args;
}
Код: Выделить всё
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(backend/web|admin)
RewriteRule !^frontend/web /frontend/web%{REQUEST_URI} [L]
RewriteCond %{REQUEST_URI} ^/admin$
RewriteRule ^admin /backend/web/index.php [L]
RewriteCond %{REQUEST_URI} ^/admin
RewriteRule ^admin(.*) /backend/web$1 [L]