我坚持简单的事情,请帮忙。 我有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我有"找不到文件。"错误。
答案 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;
}
}
}
注意:
^~
修饰符使前缀位置优先于上面的正则表达式位置。有关详情,请参阅this document。