我已经使用 ISPconfig 安装了 nginx。一切正常,只是我从 apache 服务器移植的一些网站不幸带有.php5
扩展,我不知道如何让 nginx 解析它们。我尝试了许多解决方案和变体,但仍然无法使其工作。
我将从文件中粘贴我的设置,如果有人有类似的经验并愿意分享,我将不胜感激。
文件中的部分设置: /etc/php5/fpm/php.ini
cgi.fix_pathinfo=0
/etc/nginx/站点可用/默认
服务器 { 听 80 默认服务器; 根目录/usr/share/nginx/html; 索引 index.html index.php index.htm; 地点 / { 尝试文件$uri $uri/ /index.html; } } 位置 ~ \.php$ { #fastcgi_split_path_info ^(.+\.php)(/.+)$; # # 注意:您应该在 php.ini 中有“cgi.fix_pathinfo = 0;” # # # 仅使用 php5-cgi: #fastcgi_pass 127.0.0.1:9000; # # 使用 php5-fpm: #fastcgi_pass unix:/var/run/php5-fpm.sock; #fastcgi_index 索引.php; #fastcgi_param脚本文件名$document_root$fastcgi_script_name; #包括 fastcgi_params; 尝试文件$uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index索引.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 包括 fastcgi_params; }
特定域的 Vhost 配置文件有错误:
位置 ~ \.php$ { 尝试文件/58c4be432bbd2af65343c142b9ec45ec.htm@php; } 位置@php { 尝试文件$uri =404; 包括/etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9048; fastcgi_index索引.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors开启; } 地点 / { try_files $uri $uri/ /index.php?q=$uri&$args; }
/etc/php5/fpm/pool.d/www.conf已取消评论:
安全.限制扩展名 = .php .php3 .php4 .php5
当有人访问该.php5
页面(网站有超过 500 个反向链接)时,浏览器开始下载,例如 php-fpm 没有解析.php5
文件:
XX.XXX.X.XXX - - [26/Feb/2014:22:53:07 +0000] "GET /sitemap.php5 HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML,如 Gecko) Chrome/33.0.1750.117 Safari/537.36" XX.XXX.XX.XXX - - [26/Feb/2014:22:54:27 +0000] “GET /index.php5 HTTP/1.1” 200 71941 “-” “Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0” XX.XXX.X.XXX - - [26/Feb/2014:22:56:43 +0000] “GET /sitemap.php5 HTTP/1.1” 200 71941 “-” “Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0”
我如何设置 nginx 来解析.php5
类似的页面.php
?
先感谢您。
答案1
如果你将每一行都改为:
location ~ \.php$ {
看起来像:
location ~ \.(php|php5)$ {
它应该能满足您的要求。保留 @php 行(@php 是内部块)。当然,该正则表达式可以更短,但不太清楚。
还:
在您的位置 @php 块中传递给套接字而不是本地主机:
fastcgi_pass unix:/var/run/php5-fpm.sock;