nginx path_info问题解决

问题:

访问www.xxxx.com/index.php/api/xxxxxxxxx网址时,提示无法访问,找不到页面

解决:

第一次,是改了nginx.conf,不会报这个错误了,但还是没有用

location ~ ^.+\.php {
  (...)
  fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
  fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
  fastcgi_param PATH_INFO $fastcgi_path_info;
  fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
  (...)
}

第二次,检查代码,发现在$_SERVER里找不到Path_info。需要在php.ini里配置几个选项,但有人说这样做不安全。cgi.force_redirect = 0cgi.fix_pathinfo=1fastcgi.impersonate = 1第三次,还是在nginx.conf里改了,给cgi传了path_info,问题解决(前提,关闭第二次在php.ini里改的内容)        location ~ \.php(.*)$  {            root           html/N168_7.0;            fastcgi_pass   127.0.0.1:9000;            fastcgi_index  index.php;            include fastcgi_params;            set $path_info "";            set $real_script_name $fastcgi_script_name;            if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {                set $real_script_name $1;                set $path_info $2;            }

            fastcgi_param  SCRIPT_FILENAME  $document_root$real_script_name;            fastcgi_param  SCRIPT_NAME  $real_script_name;            fastcgi_param  PATH_INFO  $path_info;        }

总结:ThinkPhp里面默认用了Path_info,所以你必须得配置,否则像一些特定路径就用不了
时间: 2024-10-07 19:32:42

nginx path_info问题解决的相关文章

thinkphp5在Linux下Nginx配置问题解决

首先tp5的访问目录指向到webroot/public文件夹中.thinkphp的url访问:http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/参数值...],这个需要支持pathinfo,Apache默认支持,而Nginx不支持.1.php.ini中的配置参数cgi.fix_pathinfo = 12.修改nginx.conf文件. location ~ \.php(.*)$ { fastcgi_pass   127.0.0.1:90

关于Centos7 firewalld防火墙开放端口后仍不能访问ftp和nginx的问题解决

我在阿里轻量应用服务器搭建ftp服务器这篇博客中把防火墙换为iptables,因为当时无论我怎么设置firewalld,就是无法访问ftp服务器,今天在翻看其他博客的时候,突然发现firewalld有打开服务这么一个命令,然后我就找到了解决的办法.查看当前开了哪些端口其实一个服务对应一个端口,每个服务对应/usr/lib/firewalld/services下面一个xml文件. firewall-cmd --list-services1通过这个命令我们查看当前打开了那些服务,比如下面这个 我开启

nginx 403 问题解决

一.由于启动用户和nginx工作用户不一致所致 /etc/nginx/nginx.conf vim nginx.conf user root; worker_processes 2; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 65535; } http { include /etc/nginx/mime.types; default_type appli

centos7更换阿里云yum源后无法安装nginx的问题解决

在centos7上,我将yum源更换为阿里云源,按照配置完成后,想使用yum安装nginx,但是老是提示我找不到nginx,没有可用的安装包,无论我是换为华为云的yum源,还是其他国内源,都无法找到.我的centos版本为7.7 无论我是安装epel-release,还是安装nginx的仓库,都没办法找到nginx包 我的nginx repo配置也没问题 一安装就找不到 但是可以用yum搜索到nginx的其他组件 这不科学 后来我想一个办法,在能够yum安装nginx的同样的机器上,把nginx

安装nginx的过程中遇到的问题

编译并安装之后,尝试启动nginx,cd /usr/local/nginx/sbin,然后输入 nginx,结果出现错误:-bash:nginx:command not found,然后输入  ./nginx,结果出现错误:nginx:[emerg] getpwnam("www") failed,这篇博客里面有解决的办法:blog.itblood.com/nginx-emerg-getpwnam-www-failed.html 按照解决方案一解决了之后,再输入  ./nginx,又出现

Nginx http 500错误分析及解决方法

出现场景:   在用nginx做负载均衡服务器对系统做并发测试,并发量比较大时Nginx会报出Http 500错误   报错原因: 访问量大的时候,由于系统资源限制,而不能打开过多的文件 原因查找: 打开nginx错误日志(/usr/local/nginx/logs/error.log) 查看是否报too many open files错误 错误解决: 打开/etc/security/limits.conf 修改 limits.conf文件,加上下面两句命令 * soft nofile 6553

nginx 出现413 Request Entity Too Large问题的解决方法

原来nginx默认上传文件的大小是1M,可nginx的设置中修改. 解决方法如下: 1.打开nginx配置文件 nginx.conf, 路径一般是:/etc/nginx/nginx.conf. 2.在http{}段中加入 client_max_body_size 20m; 20m为允许最大上传的大小. 3.保存后重启nginx,问题解决.

解决 nginx 出现 413 Request Entity Too Large 的问题

1.若nginx用所用的 php 请求解析服务是 fpm, 则检查 /etc/php5/fpm/php.ini 文件中的参数 upload_max_filesize = 20M post_max_size = 20M 重启fpm服务 service php5-fpm restart 然后上传20M以内的文件,若仍出现 413 错误,则排除 php.ini 的问题 2.在 /etc/nginx/sites-enabled/xxxx 网站配置中加入下面字段 server { ... client_m

CentOS6.6 x64+Nginx1.3.8/Apache-httpd 2.4.3+PHP5.4.8(php-fpm)+MySQL5.5.28+CoreSeek4.1源码编译安装

系统为CentOS6.6 x64服务器版精简安装. 准备工作 部署安装目录 /usr/local/* /var/lib/* /var/lib64/* 下载源文件 #cd /usr/local/src wget http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.28.tar.gz wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.10.tar.gz wget http://www.ng