У меня проблема с настройкой конфигурации 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 / в качестве отправной точки маршрутизации?
Если бы я понял вашу проблему, я думаю, что вы могли бы решить это с псевдоним директива вместо корень. С использованием корень директива 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
Надеется, что это помогает.
Других решений пока нет …