我目前正在尝试在Vagrant中为网络开发指导项目的学生设置一个通用的多项目开发环境。想法是域<project>.vagrant
映射到~/code/<project>
我认为我有足够的经验与Nginx解决这个问题,但事实证明我没有。
假设PHP-FPM设置正确,我需要有关站点配置的try_files
/路由的帮助。
虽然主页(/
)工作正常,但是对非静态文件的任何请求(因此应该传递给PHP-FPM)会导致 301 Moved Permanently 到主页,或者下载PHP脚本的内容而不是执行它。
是的,我知道列出这么多的索引文件并不理想,但学生们将处理多个项目(phpMyAdmin,WordPress)和框架(Symfony,Silex,Laravel等)。
非常感谢任何帮助!
到目前为止,单个站点可用配置文件的内容是:
map $host $projectname {
~^(?P<project>.+)\.vagrant$ $project;
}
upstream phpfpm {
server unix:/var/run/php5-fpm.sock;
}
server {
listen 80;
server_name *.vagrant;
server_tokens off;
root /home/vagrant/code/$projectname/web;
index app_dev.php app.php index.php index.html;
autoindex on;
client_max_body_size 5M;
location / {
try_files $uri $uri/ / =404;
}
# Pass all PHP files onto PHP's Fast Process Manager server.
location ~ [^/]\.php(/|\?|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# Specify the determined server-name, not the literal "*.vagrant".
fastcgi_param SERVER_NAME $projectname.vagrant;
fastcgi_pass phpfpm;
}
}