在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的命令窗口。

php curl nginx 499 错误相关推荐

  1. 服务器排障 之 nginx 499 错误的解决

    问题描述: Nginx 服务器大量499报错 220.181.165.136 - - [18/May/2015:10:31:02 +0800] "POST /v1/jobsHTTP/1.1& ...

  2. HTTP 499 状态码 nginx下 499错误

    日志记录中HTTP状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499.发送字节数是0. 老是有用户反映网站系统时好时坏,因为线上的产 ...

  3. 400错误是什么原因_499错误是什么?499错误的原因及解决方法

    ​ HTTP状态码出现499错误有多种情况,499错误是什么?下面我们来学习Nginx 499错误的原因及解决方法. 日志记录中HTTP状态码出现499错误有多种情况,比如nginx反代到一个永远打不 ...

  4. Nginx502,504和499错误解决方案

    499错误解决方案 499错误是什么?让我们看看NGINX的源码中的定义: ngx_string(ngx_http_error_495_page), /* 495, https certificate ...

  5. nginx 499 502 413 404 处理

    1.请检查你的FastCGI进程是否启动 2.FastCGI进程不够使用 请通过执行 netstat -anpo | grep "php-cgi" | wc -l 判断,是否接近你 ...

  6. nginx常见错误之(CreateFile() “D:\LCJ\下载\nginx/conf/nginx.conf“ failed (3: The system cannot find the path

    Nginx启动错误 报错createFile failed ,网上找了很久,各种五花八门的答案,试了很多都是不行,后面看到一个答案可能是安装目录包含中文名,改一下就好了.希望能帮助到你们 转载于 ht ...

  7. Nginx 500错误总结

    500(服务器内部错误)  服务器遇到错误,无法完成请求. 501(尚未实施)  服务器不具备完成请求的功能.例如,当服务器无法识别请求方法时,服务器可能会返回此代码. 502(错误网关)  服务器作 ...

  8. CentOS docker 部署 flask + uWSGI + Nginx + Supervisor错误

    我用Superviso 启动 Nginx 和 uwsgi Superviso配置如下: Nginx 简单配置: 启动的效果: 启动Nginx的错误日志: 一直提示我端口被占用 但是我 ps -aux ...

  9. PHP Curl出现403错误的解决办法 beecloud webhook订单状态返回 服务器403的问题

    http://write.blog.csdn.net/postedit PHP Curl出现403错误的解决办法 作者: 字体:[增加 减小] 类型:转载 时间:2014-05-29 我要评论 这篇文 ...

最新文章

  1. android wear 兼容问题,【悲剧了】仅 1/4 安卓手机兼容 Android Wear - 爱应用
  2. java虚拟机-JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)
  3. 软件设计是决定软件性能的关键
  4. android 线性布局 底部,java – 如何在android线性布局中对齐父底部?
  5. 打造一款安全的互金产品时,需要考虑什么
  6. 牛客题霸 NC17 最长回文子串
  7. JQuery中一些常用函数的运用
  8. Redis 多线程网络模型
  9. 企业注册一站式服务平台公司宝App挂牌新三板
  10. SLAM学习与求职经验分享_李阳阳
  11. 骗赞小程序(仅供恶搞)
  12. Java 本地接口(JNI)编程指南和规范学习笔记2
  13. PT2262/2272遥控编解码集成电路
  14. Matlab如何在文件中写入空格和换行
  15. 如何查询linux的系统版本
  16. vue+springboot
  17. 计算机专业学渣面试,感觉读了计算机专业真的是一条不归路
  18. java 取10位时间戳_java里Date 10位时间戳(Timestamp) String 相互转换
  19. 阿里云搭建frp(其他云,通用)内网穿透
  20. 整型家族(字符、短整型、整型、长整型)的范围

热门文章

  1. 文件分段上传案列(参考b站小野森森老师的课)
  2. 树莓派Zero 2 W平台不同等级TF卡的性能对比
  3. Excel工作表事件(4)- 单元格修订记录跟踪
  4. HTC不仅不会卖而且还要收购同行
  5. Pythonxy下载链接
  6. 【010】翼辉信息首次亮相南京软博会
  7. VB+Access设计图书管理系统
  8. 虚拟机重启后再次重启nginx: [error] open() “/var/run/nginx/nginx.pid“ failed (2: No such file or directory)
  9. linux 远程文件拷贝
  10. bzImage、zImage