Конфигурация AngularJS и Laravel для nginx. Запуск php из сегмента URL

У меня проблема с настройкой конфигурации laravel, которая запускается из / api / сегмента основного домена.
Идея состоит в том, чтобы служить в основном приложении Angular на subdomain.domain.com и в конфигурации php-сервера subdomain.domain.com/api/ laravel.

ОБНОВЛЕНИЕ № 1

Мне удалось запустить laravel из / api / сегмента с этой конфигурацией

server {
listen 80;
server_name subdomain.domain.com;
root /var/www/subdomain.domain.com/client/monkey/dist;

access_log /var/www/subdomain.domain.com.access.log;
error_log  /var/www/subdomain.domain.com.error.log;
rewrite_log on;

index index.php index.html;

location /  {

root /var/www/subdomain.domain.com/client/monkey/dist;
index index.html;
if (!-e $request_filename){ # handles page reload
rewrite ^(.*)$ /index.html break;
}
}

location /api/ {
root /var/www/subdomain.domain.com/server/;
try_files $uri $uri/ /api/index.php$is_args$args;
}

location ~ /api/.+\.php$ {

root /var/www/subdomain.domain.com/server/;
rewrite ^/api/(.*)$  /$1  break;

fastcgi_pass                    unix:/var/run/php5-fpm.sock;
include                         /etc/nginx/fastcgi_params;
fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index                   index.php;
fastcgi_param                   MONKEY_ENV production;
fastcgi_split_path_info         ^(.+?\.php)(/.*)?$;
# fastcgi_split_path_info         ^(.+\.php)(.*)$;
}
}

Единственная проблема, которая осталась, заключается в том, что когда я использую subdomain.domain.com/api/segment1/segment … тогда мне нужно добавить в rout.php

Route::group(['prefix' => 'api'], function () {
// my routes settings
});

Поскольку laravel начинается с suddomain.domain.com/ в качестве корневого пути. Как я могу переписать / api /, чтобы laravel принял / api / в качестве отправной точки маршрутизации?

1

Решение

Если бы я понял вашу проблему, я думаю, что вы могли бы решить это с псевдоним директива вместо корень. С использованием корень директива Nginx просто принимает де информирован место нахождения и объединить его в конце информированного корневого пути.

Итак, в вашем случае это конф:

location /api/ {
root /var/www/subdomain.domain.com/server/;
try_files $uri $uri/ /api/index.php$is_args$args;
}

Nginx решил бы это /var/www/subdomain.domain.com/server/api как последний путь.

С использованием псевдоним директива, это конф,

location /api {
alias /var/www/subdomain.domain.com/server/;
try_files $uri $uri/ /api/index.php$is_args$args;
}

будет преобразован во все, что предназначено для ‘/ api’, но nginx не объединяет строку ‘api’ в конечном пути, который он использует.

http://nginx.org/en/docs/http/ngx_http_core_module.html#alias

Надеется, что это помогает.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector