Конфигурация Nginnx для шаблона расширенного приложения Yii 2
Я не могу настроить сервер Nginx, так что:
- на
public_html/frontend/web/index.php
файл будет отправлен в ответ на " index.php " запрос. - на
public_html/backend/web/index.php
файл будет отправлен в ответ на " admin / index.php " запрос.
подскажите пожалуйста, где я ошибаюсь. Вот моя конфигурация:
server {
listen 80;
server_name yii2.lo;
server_tokens off;
client_max_body_size 128M;
charset utf-8;
access_log /var/log/nginx/yii2-access.log main buffer=50k;
error_log /var/log/nginx/yii2-error.log notice;
set $host_path "/srv/http/yii2/public";
set $yii_bootstrap "index.php";
index $yii_bootstrap;
location / {
root $host_path/frontend/web;
try_files $uri $uri/ /$yii_bootstrap?$args;
}
location /admin {
root $host_path/backend/web;
try_files $uri $uri/ /$yii_bootstrap?$args;
}
location ~ .php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_index $yii_bootstrap;
# Connect to php-fpm via socket
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_connect_timeout 30s;
fastcgi_read_timeout 30s;
fastcgi_send_timeout 60s;
fastcgi_ignore_client_abort on;
fastcgi_pass_header "X-Accel-Expires";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTP_REFERER $http_referer;
include fastcgi_params;
}
location ~* .(js|css|less|png|jpg|jpeg|gif|ico|woff|ttf|svg|tpl)$ {
expires 24h;
access_log off;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
log_not_found off;
access_log off;
}
location ~ /. {
deny all;
access_log off;
log_not_found off;
}
}
4 ответов
короче говоря: используйте первый метод, приведенный ниже.
остальная часть ответа-это список рекомендаций.
я разделю свой ответ на два раздела. В первой части я расскажу вам самый простой и быстрый способ достижения вашей цели в соответствии с вашими желаемыми запросами URL, но это частично нарушает структуру приложения, ничего серьезного, хотя.
во второй части я опишу вам, где вы допустили ошибки в своей файл конфигурации, и я покажу вам плохо написанную конфигурацию для ваших нужд, которая работает.
I. развертывание общего хостинга
я настоятельно рекомендую вам использовать это. Это официальным путем из документации Yii 2, чтобы сделать бэкэнд работать в том же домене, хотя это помогает развернуть проект на общий хостинг. И для этого не требуется никакой дополнительной конфигурации nginx, только базовая для frontend root.
позвольте мне написать простой список в соответствии с этим руководством:
- переместить содержимое из
/backend/web
to/frontend/web/admin
. - правильные пути скриптов в
/frontend/web/admin/index.php
(иindex-test.php
, если вы используете его)
это все, у вас есть бэкэнд в том же домене в /admin
URL-адрес. Кроме того, прочитайте последний раздел руководства, касающийся файлов cookie. Расширенный шаблон был разработан для использования различных доменов для каждой среды, поэтому в руководстве описывается конфигурация бэкэнда для общего доступа хостинг для хранения куки-файлов из frontend и backend отдельно.
конечно, не забудьте изменить свой /environments
файлы для правильной инициализации вашего проекта с /init
сценарий.
II. Конфигурация Nginx
ошибки
я не профессиональный администратор nginx, но я могу описать, что не так в вашей конфигурации, основываясь на моем личном опыте и документации. К сожалению, я не смогу предоставить ссылки на документация, потому что мой текущий рейтинг не позволит мне опубликовать более 2 ссылок.
контекст сервера root
нет root
директива в контексте вашего сервера. Таким образом, когда ~ \.php$
местоположение совпадает, у него нет корня вообще и использует корень nginx по умолчанию. Попробуйте установить общие
попробуйте указать конфигурацию Nginx : Я использую конфигурацию для шаблона " Advanced в файле конфигурации домена укажите интерфейс для so:
слушать фронтэнда.сайт.loc: 80; # для интерфейса
укажите домен бэкэнда: слушать бэкэнда.сайт.loc: 80; # для бэкэнда
этот парень проделал очень хорошую работу по созданию расширенного приложения nginx config (с поддоменом, который IMHO является лучшей настройкой):https://gist.github.com/Kison/45ec9ce3c1ebf422cbd42bd5ce04d8e4