вторник, 9 июня 2015 г.

nginx default Конфиг для сайтов yii и yii2 advanced

Если есть домен третьего уровня, идёт запрос на одноимённую подпапку.
Таким образом frontend.domain.lo и backend.domain.lo это адреса для yii2 advanced
А domain.lo для yii1

Так же, если нужно будет добавлять api.domain.lo или mobile.domain.lo, то ничего добавлять в nginx не потребуется, только прописать домены в hosts

Так же конфиг подходит для обычных сайтов с точкой входа index.php



server {
 server_name *.lo;

 set $www "/home/user/www";

 set $subdomain "";
 set $domain "";
 set $bootstrap "index.php";

 listen 80;
 server_tokens off;
 charset utf-8;


 if ($host ~* ^(?:([_a-z0-9]+)\.)?([_a-z0-9]+)\.lo$) {
  set $subdomain $1;
  set $domain $2;
 }

 if ($subdomain != "") {
  set $root $www/$domain/$subdomain/web;
 }

 if ($subdomain = "") {
  set $root $www/$domain;
 }


 root $root;
 index $bootstrap;

 access_log /home/user/www/nginx-access.log;
 error_log /home/user/www/nginx-error.log;


 location / {
  try_files $uri $uri/ /$bootstrap?$args;
 }

 location ~ \.php$ {
  try_files $uri =404;

  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_index $bootstrap;

  # Connect to php-fpm via socket
  fastcgi_pass unix:/var/run/php5-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;
 }
}