nginx多個虛擬主機noinputfilespecified
今天配置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/
網上提供的解決方法:
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;
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 檔案,每個域名一個,開啟不
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
例如 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,如需轉載請自行聯絡原作者
相關文章
- Nginx虛擬主機配置Nginx
- nginx伺服器配置多個虛擬主機vhost的方法示例Nginx伺服器
- nginx虛擬主機實戰Nginx
- 007.Nginx虛擬主機Nginx
- nginx基礎篇之虛擬主機實戰Nginx
- Nginx虛擬主機常用配置(學習筆記四)Nginx筆記
- Nginx執行控制虛擬主機和訪問控制Nginx
- 福音 虛擬主機
- Nginx 虛擬主機配置的三種方式(基於域名)Nginx
- 在Apache上實現多HTTPS虛擬主機ApacheHTTP
- 免備案虛擬主機哪個好
- Apache 配置多個站點(虛擬主機)最簡單的辦法Apache
- NGINX 如何遮蔽未被定義的虛擬主機的訪問Nginx
- 主機ping不了虛擬機器虛擬機
- 詳解Nginx 虛擬主機配置的三種方式(基於埠)Nginx
- 詳解Nginx 虛擬主機配置的三種方式(基於IP)Nginx
- Nginx中關於虛擬主機的一點冷門知識Nginx
- Linux虛擬主機與Windows虛擬主機之間有什麼區別LinuxWindows
- 五個引數讓你讀懂虛擬主機
- 如何用虛擬主機搭建一個部落格/blog?
- VMware虛擬機器如何設定使主機和虛擬機器不同IP虛擬機
- WordPress主機和共享虛擬主機不同在哪?
- 虛擬主機和vps主機使用哪些人群?
- BlueHost雲虛擬主機優勢
- lnmp虛擬主機安全配置研究LNMP
- 什麼是虛擬主機流量
- 虛擬主機流量是什麼
- 虛擬主機php.ini在哪PHP
- apache虛擬web主機構建ApacheWeb
- 虛擬主機和VPS主機有哪些不同點呢
- 阿里雲 虛擬主機 搭建官網阿里
- Centos 7 構建虛擬Web主機CentOSWeb
- 虛擬主機有哪些優缺點
- Apache 虛擬主機裡的 ServerName 指令ApacheServer
- 基於 LNMP 的 Nginx 百萬併發之路 (三)基於域名的虛擬主機LNMPNginx
- Nginx配置虛擬主機有哪些步驟?linux伺服器入門學習NginxLinux伺服器
- 國內與國外虛擬主機對比哪個更好
- 怎麼樣選擇一個合適的虛擬主機
- 虛擬主機和VPS主機之間的幾點不同