设置Nginx + PHP来从主目录服务的PHP文件

这里是我的nginx.conf的相关部分,它不适用于位于用户的主目录中的php文件:

location ~ ^/~(.+?)(/.*)?$ { alias /usr/home/$1/www$2; autoindex on; } # Serve user directories php files location ~ ^/~(.+?)(/.*\.php)$ { alias /usr/home/$1/www; try_files $2 =404; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_intercept_errors on; include fastcgi_params; fastcgi_param SCRIPT_NAME /~$1$fastcgi_script_name; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; } 

您可以使用嵌套的位置块来处理.php文件。 例如。

 location ~ ^/~(?<user>.+?)(?<path>/.*)?$ { alias /usr/home/$user/www$path; autoindex on; location ~ \.php$ { if (!-f $request_filename) { return 404; } fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_intercept_errors on; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; } } location ~ \.php$ { ... } 

请参阅此文档了解更多

编辑:我意识到我需要使用命名捕获数字捕获超出范围。