NGINX,将少数本地主机转发到php-fpm

时间:2017-02-09 13:11:15

标签: php nginx

我坚持简单的事情,请帮忙。 我有2个PHP项目目录:/ var / www / api /和/ var / www / api-beta /。 我想将它们转发到PHP-FPM。 Nginx配置:

server {
    listen 80;
    set $doc_root /var/www/api;
    root $doc_root;
    index  index.php index.html;


  location /beta {
            alias /var/www/api-beta;
    }


    location ~ \.php$ {
        set $php_root /var/www/api;
        if ($request_uri ~* /beta) {
             set $php_root /var/www/api-beta;
              }

            fastcgi_pass   unix:/var/run/php/php7.0-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $php_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;


    }
}

我已尝试使用if ($request_uri ~* /beta)执行此操作,但它无法正常工作。我觉得这个问题,因为来自/ var / www / api的项目工作正常,但是从/ var / www / api-beta我有"找不到文件。"错误。

1 个答案:

答案 0 :(得分:0)

为每个PHP根目录创建一个location块可能更简单:

server {
    listen 80;
    root /var/www/api;
    index  index.php index.html;

    location ~ \.php$ {
        try_files $uri =404;

        include /etc/nginx/fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $request_filename;
        fastcgi_pass   unix:/var/run/php/php7.0-fpm.sock;
    }

    location ^~ /beta {
        alias /var/www/api-beta;

        location ~ \.php$ {
            if (!-f $request_filename) { return 404; }

            include /etc/nginx/fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME  $request_filename;
            fastcgi_pass   unix:/var/run/php/php7.0-fpm.sock;
        }
    }
}

注意: