如果URI包含“dashboard”,nginx不会向php fpm发送请求,但它会为所有其他URI发送请求
我正在推出自己的MVC框架,这让我发疯。我有所有不解析为实际文件的URL重定向到/index.php?$args。在该框架内,我询问请求的URI以提取请求的上下文和参数。我从服务器上偷了这个配置片段 示例: example.com/dashboard example.com/user/456 example.com/devices example.com/blog/789 以上所有内容都应该向php fpm发送index.php请求。我的问题是1并没有像预期的那样工作,而2、3和4都没有 在第1种情况下,我认为nginx没有发送到php fpm,而是返回index.php的内容,最后我看到了一个名为dashboard的文件的save file对话框,文件中是我的index.php源代码 以下是我的相关nginx配置:如果URI包含“dashboard”,nginx不会向php fpm发送请求,但它会为所有其他URI发送请求,nginx,php,Nginx,Php,我正在推出自己的MVC框架,这让我发疯。我有所有不解析为实际文件的URL重定向到/index.php?$args。在该框架内,我询问请求的URI以提取请求的上下文和参数。我从服务器上偷了这个配置片段 示例: example.com/dashboard example.com/user/456 example.com/devices example.com/blog/789 以上所有内容都应该向php fpm发送index.php请求。我的问题是1并没有像预期的那样工作,而2、3和4都没有 在第1
location ~ \.php$ {
try_files $uri =404;
include php_conf;
}
location / {
try_files $uri /index.php?$args;
}
我的php_配置是标准配置:
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_param DB_HOST [redacted];
fastcgi_param DB_USER [redacted];
fastcgi_param DB_NAME [redacted];
fastcgi_param DB_PASS [redacted];
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include fastcgi_params;
fastcgi_参数是:
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 $request_filename;
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 GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
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;
fastcgi_param HTTPS $https;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
有人知道为什么/devices URI有效,而/dashboard无效吗
nginx将用户和SEO友好的URL(如上述格式)转换为对index.php的调用的最佳实践是什么
我很确定文件系统中没有名为/dashboard的文件,它肯定不包含index.php文件的内容
还有一个有趣的附加症状:案例2、3、4导致access.log中出现HTTP 200日志条目,但在案例1中,nginx的访问或错误日志中没有任何内容,即使服务器发送index.php的源内容
我很困惑。我从未找到根本原因,但我开始怀疑《流浪者》上的nginx不是100%可靠的。我重建了vagrant服务器,上面的配置确实有效 所以当有疑问时:流浪者毁灭;流浪汉