Настройка Lumen + Nginx в поддиректории

October 29, 2015

project5

Приложения для социальных сетей почти всегда требуют настроенного SSL, чтобы не покупать wildcard сертификат, мы настраиваем SSL на одном домене и разворачиваем наши проекты в поддиректориях.
В этой статье мы приведем пример конфига для связки Nginx + Lumen(5.1.x).

/etc/nginx/sites/available/example.com:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/example.com;
    index index.html index.htm index.php;

    server_name example.com localhost;
    
    location / {
            try_files $uri $uri/ =404;
    }

    include inc/lumen-project;
    
    location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
    }

/etc/nginx/inc/lumen-project:

### STAGING ###
location ^~ /lumen-project {
    alias /var/www/example.com/lumen-project/public;
    try_files $uri $uri/ @lumen-project;

    location ~ \.php {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
    }
}
location @lumen-project {
    rewrite /lumen-project/(.*)$ /lumen-project/index.php?/$1 last;
}

### DEVELOPER1 ###
location ^~ /d1/lumen-project {
    alias /home/d1/www/lumen-project/public;
    try_files $uri $uri/ @lumen-project-d1;

    location ~ \.php {
        fastcgi_pass unix:/var/run/php5-fpm_d1.sock;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
    }
}
location @lumen-project-d1 {
    rewrite /d1/lumen-project/(.*)$ /d1/lumen-project/index.php?/$1 last;
}

Открываем public/index.php, заменяем

$app->run();

на

$app->run($app['request']);

profit!