我们在其中一个站点上运行了不同版本的 PHP,因此我们配置了 fastcgi。但是对任何文件的请求,甚至静态 css 和 js 都会被传递。我们如何将其限制为仅限 php?这是当前配置:
<VirtualHost *:80>
DocumentRoot /services/www/htmlblog
DirectoryIndex index.html index.shtml index.cgi index.php
ServerName 128.199.222.207
ServerAlias www.blog.example.org
<IfModule mod_fastcgi.c>
<FilesMatch \.php$>
SetHandler php-script
</FilesMatch>
FastCgiExternalServer /services/www/htmlblog -host 127.0.0.1:8998 -pass-header Authorization
</IfModule>
<FilesMatch "configuration.php">
Order allow,deny
Deny from all
</FilesMatch>
<Directory "/">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
我尝试过这个:
<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:8998 -pass-header Authorization -idle-timeout 60
</IfModule>
这将提供位于该文件夹中的 index.php 文件。如果我将其更改为:
FastCgiExternalServer /services/www/htmlblog -host 127.0.0.1:8998 -pass-header Authorization -idle-timeout 60
它再次将静态文件传递给 php-fpm。
答案1
我认为你的配置不正确。
它应该是这样的:
<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 60
</IfModule>
谢谢,然后只应将 PHP 文件传递给 FastCGI 服务器。
另外,我所做的是创建一个 fastcgi-php.conf 文件并将其放入我的 conf-available 文件夹中,并将其符号链接,这样我就可以为整个服务器启用 PHP。