nginx 多个虚拟主机 no input file specified

简介:
今天配置nginx rewrite 的时候遇到一个问题,就是访问服务器的是时候提示 No input file
specified.访问PHP,访问php就没有事,可以正常访问。猜想可能是php-cgi的问题吧,google 了一
下,果然问题出现在这里。
网上提供的解决方法:
1、 php.ini(/usr/local/php/etc/php.ini)的配置中这两项
cgi.fix_pathinfo=1  (这个是自己添加的)
doc_root=
 2、nginx配置文件/usr/local/nginx/conf/nginx.conf 中注意以下部分
location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/www.abc.com/
$fastcgi_script_name;
                include               fastcgi_params;
        }
红字部分是虚拟主机的根目录。然后重启 php-fpm 和nginx
 我只实践了第二种方法,方法如下:
为 abc.com 创建一个 fastcgi_params 配置文件
vim /usr/local/nginx/conf/abc_fcgi.conf
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_FILENAME    /var/www/www.abc.com/$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;
红色部分根据自己需要添加。
abc.com   虚拟主机配置文件
vim /usr/local/nginx/conf/abc.conf
server
  {
     listen      80;
     server_name  abc.com   www.abc.com;
     index index.html index.htm index.php;
     root  /var/www/www.abc.com;
     include /var/www/www.abc.com/.htaccess;
    location ~ .*\.(php|php5)?$
    {
          #fastcgi_pass  unix:/tmp/php-cgi.sock;
          fastcgi_pass  127.0.0.1:9000;
          fastcgi_index index.php;
         include abc_fcgi.conf;
     }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
   {
        expires      30d;
   }
   location ~ .*\.(js|css)?$
   {
      expires      1h;
   }
   error_page  404  =  /404.gif;
   log_format  88  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                     '"$http_user_agent" $http_x_forwarded_for';
   access_log  logs/88_log  88;
}
其实还有一种解决办法就是很浪费资源,就是拷贝多个 php-fpm.conf 文件,每个域名一个,开启不
同的端口,每个配置文件都要添加不同的目录.
例如 abc.com  123.com 两个站点
cp /usr/local/php/etc/php-fpm.conf  /usr/local/php/etc/abc.com.conf
cp /usr/local/php/etc/php-fpm.conf  /usr/local/php/etc/123.com.conf
先修改 abc.com 虚拟主机
找到php_defines,在下面添加
<value name="open_basedir">/var/www/www.abc.com:/tmp:/var/tmp</value>
然后修改端口
<value name="listen_address">127.0.0.1:9001</value>
修改 123.com 虚拟主机
找到php_defines,在下面添加
<value name="open_basedir">/var/www/www.123.com:/tmp:/var/tmp</value>
然后修改端口
<value name="listen_address">127.0.0.1:9002</value>
 最后修改启动脚本:
vim /usr/local/php/sbin/php-fpm
注释掉原来的 #$php_fpm_BIN –fpm $php_opts,田间
 $php_fpm_BIN --fpm --fpm-config /usr/local/php/etc/www.abc.com.conf
 $php_fpm_BIN --fpm --fpm-config /usr/local/php/etc/www.123.com.conf
 启动服务
 #/usr/local/php/sbin/php-fpm restart
 修改  nginx.conf 不同的虚拟主机对应不同的 php-fpm 端口,这样就不会造成No input file
specified


本文转自Deidara 51CTO博客,原文链接:http://blog.51cto.com/deidara/300916,如需转载请自行联系原作者
相关文章
|
18天前
|
域名解析 Ubuntu 应用服务中间件
Nginx实现虚拟主机
Nginx实现虚拟主机
|
5月前
|
搜索推荐 应用服务中间件 nginx
Nginx系列教程(05) - 虚拟主机配置
Nginx系列教程(05) - 虚拟主机配置
193 0
|
2月前
|
运维 应用服务中间件 Shell
Nginx安装与虚拟主机配置shell脚本
Nginx安装与虚拟主机配置shell脚本
28 0
|
6月前
|
搜索推荐 应用服务中间件 nginx
67分布式电商项目 - nginx基于端口配置虚拟主机
67分布式电商项目 - nginx基于端口配置虚拟主机
26 0
|
6月前
|
应用服务中间件 nginx Windows
66分布式电商项目 - nginx基于域名配置虚拟主机
66分布式电商项目 - nginx基于域名配置虚拟主机
43 0
|
6月前
|
应用服务中间件 nginx
65分布式电商项目 - nginx配置虚拟主机概述
65分布式电商项目 - nginx配置虚拟主机概述
45 0
|
8月前
|
监控 网络协议 应用服务中间件
nginx--虚拟主机 server、状态模式
nginx--虚拟主机 server、状态模式
nginx--虚拟主机 server、状态模式
|
11月前
|
应用服务中间件 nginx
Nginx基于域名\端口的虚拟主机
Nginx基于域名\端口的虚拟主机
|
存储 缓存 负载均衡
配置Nginx虚拟主机(二)
⭐本文介绍⭐ 在企业信息化应用环境中,安全性不仅取决于硬件防护设备,系统加固、访问控制等基本措施,而且如何减少故障中断时间,提高存储及北方的完善性也是确保企业信息安全的重要措施。本文将进一步学习服务器缓存加速、高可用/负载均衡群集、服务器集中监控等高级安全应用。后续课程将采用最小化安装的CentOS7.3系统,安装系统时勾选"开发工具"选项,以此为基础搭建实现环境。
配置Nginx虚拟主机(二)
|
存储 缓存 负载均衡
配置Nginx虚拟主机(一)
⭐本文介绍⭐ 在企业信息化应用环境中,安全性不仅取决于硬件防护设备,系统加固、访问控制等基本措施,而且如何减少故障中断时间,提高存储及北方的完善性也是确保企业信息安全的重要措施。本文将进一步学习服务器缓存加速、高可用/负载均衡群集、服务器集中监控等高级安全应用。后续课程将采用最小化安装的CentOS7.3系统,安装系统时勾选"开发工具"选项,以此为基础搭建实现环境。
配置Nginx虚拟主机(一)