AngularJS和Laravel配置nginx。从url段运行php

时间:2014-09-16 10:05:20

标签: php angularjs laravel nginx

我在配置从主域的/ api / segment运行的laravel配置时遇到问题。 想法是在subdomain.domain.com主要的Angular应用程序和subdomain.domain.com/api/ laravel php服务器配置中提供服务。

更新#1

我已经设法使用此配置从/ api / segment运行laravel

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 ...然后我需要添加routes.php

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

由于laravel以suddomain.domain.com/作为根路径启动。我怎样才能重写/ api /以便laravel将/ api /作为路由起点?

1 个答案:

答案 0 :(得分:1)

如果我能够解决您的问题,我想您可以使用 别名指令而不是 root 解决此问题。使用 root 指令,Nginx只需知道位置并在知情根路径的末尾连接它。

所以,在你的情况下,这个conf:

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作为最终路径。

使用 别名 指令,此conf,

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

希望这会有所帮助。