Laravel 4在Nginx Proxy Reverse下

时间:2015-01-08 13:57:22

标签: php laravel nginx reverse-proxy

我试图设置两个Laravel应用程序......有一个主应用程序和一个API,必须在路径下运行

主要应用URI:http://subdomain.domain.com API App URI:http://subdomain.domain.com/api/

所以,这里是Nginx配置:

server {
    listen 80;
    server_name subdomain.domain.com;
    return 301 https://$server_name$request_uri;
}
server {
    listen 443;
    server_name subdomain.domain.com;
    ssl on;

    ssl_certificate ...;
    ssl_certificate_key ...;

    root /usr/share/nginx/html/main_project/current/public;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location /api {
        proxy_pass http://127.0.0.1:81;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        add_header Cache-Control public;
    }

    # pass the PHP scripts to FastCGI server listening on /var/run/php5-fpm.sock
    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param  PHP_ADMIN_VALUE    "open_basedir=none";
        fastcgi_param  HTTPS  on;
    }

}


server {
    listen 81;

    root /usr/share/nginx/html/api_project/current/public;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
     }
}

问题是:API应用下的路由无效。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

您似乎在第二个服务器fastcgi块中缺少路径split指令。 尝试按以下方式修改它:

location ~ \.php$ {
    try_files $uri /index.php =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
 }