当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪nginx中的alias以及alias目录中使用rewrite的方法      本文为大家介绍nginx中的alias以及alias目录中使用rewrite的方法,有需要的朋友可以参考下。 一 、一个跨目录的用法   代码如下: location / { root  /XXX/A/; index index.do index.jsp index.html index.htm; p.........
    ▪Nginx执行php显示no input file specified的处理方法      在ubuntu系统中,使用apt-get install nginx和php-cgi,配置好nginx和php。 在/var/www/nginx-default中放上一份phpinfo.php,使用 http://localhost/phpinfo.info 访问,结果报错,显示 “No input file specified” 现存的各.........
    ▪解决nginx1.0.11中PHP 报错 No input file specified 的问题      解决nginx1.0.11中PHP 报错 No input file specified 的问题,有需要的朋友可以参考下。 nginx1.0.11 配置文件如下:   代码如下: #user  nobody;     worker_processes  1;         error_log  logs/error.log; .........

[1]nginx中的alias以及alias目录中使用rewrite的方法
    来源: 互联网  发布时间: 2013-12-24

本文为大家介绍nginx中的alias以及alias目录中使用rewrite的方法,有需要的朋友可以参考下。

一 、一个跨目录的用法
 

代码如下:

location / {
root  /XXX/A/;
index index.do index.jsp index.html index.htm;
proxy_pass http://XXX.XXX.XXX.XXX:8080;
}

location /other/ {
  alias /XXXX/B/;
  index  index.html index.jsp;
  proxy_pass http://XXX.XXX.XXX:8080;
}
 

nginx中的alias等于再定义一个location, 注意 other/ 后面的"/"千万不要省掉。

二、alias建好了,但后面做伪静态遇到点小问题,就是确认过rewrite规则无误,就是转发不成功。
例如:
 

代码如下:

location / {
root  /XXX/A/;
index index.do index.jsp index.html index.htm;
proxy_pass http://XXX.XXX.XXX.XXX:8080;
}

location /other/ {
  alias /XXXX/B/;
  index  index.html index.jsp;
rewrite ^/([0-9]+)$ /other/index.jsp?mapid=$1 last; rewrite ^/([0-9]+)/$ /other/index.jsp?mapid=$1 last;
proxy_pass http://XXX.XXX.XXX:8080;
}

为什么不成功呢? 打开日志检查发现访问 http://xxx.com/25 实际读取的是25,肯定是404了,我们需要让它取得的是 other/index.jsp?mapid=25, 原因在于我们的rewrite位置放置的不正确,应该放在 location / 里,放在下面,如果访问的是  http://xxx.com/other/25 才会有用,所以正确的应该为:
 

代码如下:

location / {
    root  /XXX/A/;
    index index.do index.jsp index.html index.htm;
    rewrite ^/([0-9]+)$ /other/index.jsp?mapid=$1 last; rewrite ^/([0-9]+)/$ /other/index.jsp?mapid=$1 last;
    proxy_pass http://XXX.XXX.XXX.XXX:8080;
}

location /other/ {
   alias /XXXX/B/;
   index  index.html index.jsp;
   proxy_pass http://XXX.XXX.XXX:8080;
}


    
[2]Nginx执行php显示no input file specified的处理方法
    来源: 互联网  发布时间: 2013-12-24

在ubuntu系统中,使用apt-get install nginx和php-cgi,配置好nginx和php。

在/var/www/nginx-default中放上一份phpinfo.php,使用
http://localhost/phpinfo.info
访问,结果报错,显示 “No input file specified”

现存的各种方案,是让你把nginx站点配置文件中的这一句话hardcode起来的(真想骂人):
# 即把fastcgi_param指令的SCRIPT_FILENAME项 从动态值改为fixed值,如:
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
# 修改为
fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
另外还有一种是修改php.ini中的什么
cgi.fix_pathinfo=1
doc_root=
请注意!!以上这些都是非常不良的改动!

问题原因
导致“No input file specified. ”这个问题的原因,是因为nginx的配置不正确,从而导致CGI获取参数错误。
简单来说,是因为$document_root这个变量尚未定义。

Nginx的配置文件中,fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
是一个写在location块(通常是匹配php)中的指令语句。
而我们也知道,在nginx中,有三级的关系,http  >  server  >  location。
如果要在location块中使用$document_root,需要在上层server块或http块中定义了root指令,这样才能通过继承关系,在location块中用$document_root拿到root的值。而定义在别的location块中的root指令的值,是一个局部变量,其值无法在匹配php的这个location块中被获取。

因此,解决这个问题的办法,是把"/" location块中的root上提到server。
或者,在php的location块中,重新定义root。

备注:以上修改方法,供大家学习参考,请针对自己当前运行的nginx版本,采取必要措施。你懂的。


    
[3]解决nginx1.0.11中PHP 报错 No input file specified 的问题
    来源: 互联网  发布时间: 2013-12-24

解决nginx1.0.11中PHP 报错 No input file specified 的问题,有需要的朋友可以参考下。

nginx1.0.11 配置文件如下:
 

代码如下:
#user  nobody;  
  worker_processes  1;  
   
  error_log  logs/error.log;  
  #error_log  logs/error.log  notice;  
  #error_log  logs/error.log  info;  
   
  #pid    logs/nginx.pid;  
   
   
  events {  
    worker_connections  1024;  
  }
 
  http {  
    include     mime.types;  
    default_type  application/octet-stream;  
   
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' 
    #          '$status $body_bytes_sent "$http_referer" ' 
    #          '"$http_user_agent" "$http_x_forwarded_for"';  
   
    #access_log  logs/access.log  main;  
   
    sendfile    on;
    #tcp_nopush   on;  
   
    #keepalive_timeout  0;  
    keepalive_timeout  65;  
   
    #gzip  on;  
   
    server {
      listen     8080;
      server_name  localhost;
      charset utf-8;  
      #charset koi8-r;  
   
      #access_log  logs/host.access.log  main;  
   
      location / {  
        root   html;  
        index  index.html index.htm index.php;  
        autoindex on;  
      }  
   
      #error_page  404        /404.html;  
   
      # redirect server error pages to the static page /50x.html  
      #  
      error_page   500 502 503 504  /index2.html;  
      location = /index2.html {  
        root   html;  
      }  
   
      # proxy the PHP scripts to Apache listening on 127.0.0.1:80  
      #  
      #location ~ \.php$ {  
      #  proxy_pass   http://127.0.0.1;  
      #}  
   
      # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
      #  
      location ~ \.php$ {  
         #root       D:\test;  
         fastcgi_pass   127.0.0.1:9000;  
         fastcgi_index  index.php;  
         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  
         include    fastcgi_params;  
      }  
   
      # deny access to .htaccess files, if Apache's document root  
      # concurs with nginx's one  
      #  
      #location ~ /\.ht {  
      #  deny  all;  
      #}  
    }   
   
    # another virtual host using mix of IP-, name-, and port-based configuration  
    #  
    #server {  
    #  listen     8000;  
    #  listen     somename:8080;  
    #  server_name  somename  alias  another.alias;  
   
    #  location / {  
    #    root   html;  
    #    index  index.html index.htm;  
    #  }  
    #}  
   
    # HTTPS server  
    #  
    #server {  
    #  listen     443;  
    #  server_name  localhost;  
   
    #  ssl          on;  
    #  ssl_certificate    cert.pem;  
    #  ssl_certificate_key  cert.key;  
   
    #  ssl_session_timeout  5m;  
   
    #  ssl_protocols  SSLv2 SSLv3 TLSv1;  
    #  ssl_ciphers  HIGH:!aNULL:!MD5;  
    #  ssl_prefer_server_ciphers   on;  
   
    #  location / {  
    #    root   html;  
    #    index  index.html index.htm;  
    #  }  
    #}
  } 

做如下的主要修改:
1. 更改php.ini
首先php.ini的配置中把
;cgi.fix_pathinfo=0
改为
cgi.fix_pathinfo=1

2. 在nginx/conf/nginx.conf
找到:
fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
改为:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3