`

php curl nginx 499 错误

 
阅读更多

在windows中开发LNMP项目时,会遇到同一台机器上有多个套php代码,如果直接用php通过curl访问其他项目时会提示超时。

 

经过尝试,可以用如下方式解决!

 

先查看nginx日志时看到如:

192.168.1.189 - - [17/Oct/2016:14:34:17 +0800] "GET /proxy/data/10002?asjdflasjkld=a12&sign=4033d03c16083e054f118a46247554653473fde0 HTTP/1.1" 499 0 "-" "-"

 

搜了下是nginx取消了请求,原因是请求超时,即访问php时发生了"死锁"的问题(我自己的话)。要解决此问题请参考如下配置:

 

假设本地hosts文件类似:

127.0.0.1 a.com

127.0.0.1 b.com

从a.com 访问 b.com

 

nginx配置如下,注意红字部分:

server{

listen 80;

server_name a.com;

location / {

   rewrite ^(.*)$ /index.php?$1 break;

        index index.php;

        fastcgi_pass 127.0.0.1:9000;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        include fastcgi_params;

}

}

server{

listen 8001;

server_name b.com;

location / {

    rewrite ^(.*)$ /index.php?$1 break;

        index index.php;

        fastcgi_pass 127.0.0.1:9001;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        include fastcgi_params;

}

}

 

这样两个项目(端口80和8001)分别连接php-cgi的9000及9001端口。注意:nginx可以都设成80,但php必须分开。

 

原因,windows下phpcgi没有多线程!linux中cgi启动时可以配置线程数的,所以没问题。(内因不研究了,问百度)

 

解决思想:

1.a.com启动后连接了9000端口,b.com启动后连接9001端口,二者不会导致cgi资源被占用而产生的超时问题。

2.在php中调用curl时需要配置 CURLOPT_HTTPHEADER

$url = 'http://127.0.0.1:8001'; // b的域名
$ch = curl_init($url);
curl_setopt_array(
    $ch, array(
         CURLOPT_HTTPHEADER=>array(
                "Host: b.com"
         ),
         // 其他参数
    )
);
$ret = curl_exec($ch);
// 处理结果

 

如此这般即可解决本地hosts映射后,curl能顺利找到相关网站的问题!

 

启动和停止phpcgi的cmd.zip文件请参考附件。

RunHiddenConsole这个大家可以看看,这个在用非集成环境(如phpStudy)时用于隐藏nginx的命令窗口。

 

 

  • cmd.zip (693 Bytes)
  • 下载次数: 0
1
1
分享到:
评论

相关推荐

    php+mysql+nginx安装与常遇到的错误.doc

    本篇文档将详细介绍如何在`CentOS`系统上安装`PHP`、`MySQL`和`Nginx`,以及可能遇到的常见错误。 首先,安装`Nginx 0.8.15`和`PHP 5 (FastCGI)`需要确保系统中拥有必要的依赖库。对于`CentOS`系统,可以使用`yum`...

    upupw_nginx_php5.6

    8. **日志管理**:Nginx和PHP都有自己的日志系统,分别记录访问日志和错误日志,这对于排查问题和分析网站性能非常有用。 9. **性能优化**:Nginx可以通过缓存、负载均衡、GZIP压缩等方式提高性能。而PHP5.6也有...

    windows下 php环境部署 nginx+php-nts+fcgi

    同时,需要安装一些必要的PHP扩展,例如php-curl、php-mysql等,以支持常见的Web开发功能。 3. **配置PHP-FPM**:在PHP安装目录下,创建`php-fpm.conf`文件,配置FastCGI监听端口和工作模式。PHP-FPM(PHP FastCGI ...

    PHP7.2+NGINX Linux环境搭建与脚本

    - 配置编译选项,包括Nginx模块支持:`./configure --prefix=/usr/local/php --with-config-file-path=/etc/php --with-config-file-scan-dir=/etc/php/conf.d --enable-fpm --with-fpm-user=nginx --with-fpm-...

    php73和拓展curl需要用到的dll

    在安装和配置过程中,如果遇到错误,可以通过查看错误日志、查阅PHP官方文档或在线社区来解决问题。对于DLL文件的处理,理解Windows的系统路径和依赖关系也是很重要的。记住,安全第一,不要随意修改系统文件,以免...

    mysql5.5+php+nginx脚本自动化部署

    自动化部署是现代IT环境中提高效率和减少错误的关键环节。在“mysql5.5+php+nginx脚本自动化部署”场景中,这个过程旨在通过脚本简化在CentOS、Ubuntu等Linux操作系统上安装和配置这些组件的过程。以下是该自动化...

    Linux环境Nginx安装与调试以及PHP安装

    `./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-jpeg-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysql --with...

    Linux源码安装MySQL+MySQL主从+Nginx+Nginx负载均衡+redis+php+phpredis+tomcat

    在本教程中,我们将深入探讨如何在Linux环境中源码安装MySQL、MySQL主从复制、Nginx、Nginx负载均衡、Redis、PHP、phpredis以及Tomcat。这些技术是构建高效、可扩展的Web应用架构的基础。让我们逐一了解安装过程。 ...

    centos的nginx+php的fastcgi模式编译安装

    - 使用`curl`或浏览器访问测试页面,确保Nginx能正确转发请求给PHP-FPM处理。 7. **phpcms.conf**: 这个文件可能是Nginx针对名为phpcms的网站的特定配置文件。内容可能包括对网站根目录的定义、URL重写规则、...

    PHP脚本监控Nginx 502错误并自动重启php-fpm

    文章标题“PHP脚本监控Nginx 502错误并自动重启php-fpm”提出了一种解决方案,旨在通过PHP脚本监控Nginx是否产生了502错误,并在检测到此类错误时自动执行重启PHP-FPM进程池的操作。这种自动化监控和处理流程极大地...

    Debian系统安装nginx+php5-fpm

    使用`nginx -t`检查配置文件是否有错误。 6. 测试: 在/var/www/html目录下创建一个简单的PHP文件,如info.php,包含`<?php phpinfo(); ?>`。访问NanoPC-T2的IP地址,你应该能看到PHP信息页面。 至此,你已经在...

    CentOS7 下nginx与PHP的安装与配置.docx

    在 CentOS7 系统中,部署一个功能完备的 Web 服务通常涉及到两个关键组件:Nginx 和 PHP。本文将详细介绍如何在 CentOS7 上安装和配置 Nginx 以及 PHP,...如果遇到任何问题,检查 Nginx 和 PHP 的日志文件以排查错误。

    nginx-1.21.6安装包

    8. **检查和调试**:使用`nginx -t`检查配置文件是否有语法错误,通过`curl localhost`或浏览器访问本地Nginx服务器,确认服务正常运行。 9. **监控和维护**:可以使用`nginx -s reload`命令重新加载配置,`nginx -...

    Nginx与PHP(FastCGI)的安装、配置与优化

    3. **测试配置文件**:修改完配置文件后,使用命令`sudo nginx -t`测试配置文件是否有语法错误。 4. **重启Nginx**:配置无误后,通过命令`sudo systemctl restart nginx`重启Nginx服务使配置生效。 #### 三、PHP...

    nginx安装过程

    配置完成后,我们需要测试配置文件是否有语法错误,并尝试启动Nginx服务。 ```bash /usr/local/nginx/sbin/nginx -t /etc/init.d/nginx start netstat -lntp | grep 80 ``` 以上命令分别用于检查Nginx配置文件的...

    linux下安装nginx所需要的包

    在安装过程中,如果遇到任何错误,查阅日志文件(通常是`/var/log/nginx/error.log`)可以帮助定位问题。 在安装Nginx时,了解其工作原理、配置语法以及如何与其他服务(如PHP-FPM、MySQL等)集成也是至关重要的。...

    php也需要配置环境变量 解决Fatal error Call to undefined function curl_init()

    在PHP开发过程中,有时会遇到“Fatal error: Call to undefined function curl_init()”这样的错误提示,这通常是由于PHP的cURL扩展未正确安装或配置导致的。本文将深入讲解这个问题的解决方案,以及如何配置PHP环境...

Global site tag (gtag.js) - Google Analytics