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的命令窗口。
php curl nginx 499 错误相关推荐
- 服务器排障 之 nginx 499 错误的解决
问题描述: Nginx 服务器大量499报错 220.181.165.136 - - [18/May/2015:10:31:02 +0800] "POST /v1/jobsHTTP/1.1& ...
- HTTP 499 状态码 nginx下 499错误
日志记录中HTTP状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499.发送字节数是0. 老是有用户反映网站系统时好时坏,因为线上的产 ...
- 400错误是什么原因_499错误是什么?499错误的原因及解决方法
HTTP状态码出现499错误有多种情况,499错误是什么?下面我们来学习Nginx 499错误的原因及解决方法. 日志记录中HTTP状态码出现499错误有多种情况,比如nginx反代到一个永远打不 ...
- Nginx502,504和499错误解决方案
499错误解决方案 499错误是什么?让我们看看NGINX的源码中的定义: ngx_string(ngx_http_error_495_page), /* 495, https certificate ...
- nginx 499 502 413 404 处理
1.请检查你的FastCGI进程是否启动 2.FastCGI进程不够使用 请通过执行 netstat -anpo | grep "php-cgi" | wc -l 判断,是否接近你 ...
- nginx常见错误之(CreateFile() “D:\LCJ\下载\nginx/conf/nginx.conf“ failed (3: The system cannot find the path
Nginx启动错误 报错createFile failed ,网上找了很久,各种五花八门的答案,试了很多都是不行,后面看到一个答案可能是安装目录包含中文名,改一下就好了.希望能帮助到你们 转载于 ht ...
- Nginx 500错误总结
500(服务器内部错误) 服务器遇到错误,无法完成请求. 501(尚未实施) 服务器不具备完成请求的功能.例如,当服务器无法识别请求方法时,服务器可能会返回此代码. 502(错误网关) 服务器作 ...
- CentOS docker 部署 flask + uWSGI + Nginx + Supervisor错误
我用Superviso 启动 Nginx 和 uwsgi Superviso配置如下: Nginx 简单配置: 启动的效果: 启动Nginx的错误日志: 一直提示我端口被占用 但是我 ps -aux ...
- PHP Curl出现403错误的解决办法 beecloud webhook订单状态返回 服务器403的问题
http://write.blog.csdn.net/postedit PHP Curl出现403错误的解决办法 作者: 字体:[增加 减小] 类型:转载 时间:2014-05-29 我要评论 这篇文 ...
最新文章
- android wear 兼容问题,【悲剧了】仅 1/4 安卓手机兼容 Android Wear - 爱应用
- java虚拟机-JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)
- 软件设计是决定软件性能的关键
- android 线性布局 底部,java – 如何在android线性布局中对齐父底部?
- 打造一款安全的互金产品时,需要考虑什么
- 牛客题霸 NC17 最长回文子串
- JQuery中一些常用函数的运用
- Redis 多线程网络模型
- 企业注册一站式服务平台公司宝App挂牌新三板
- SLAM学习与求职经验分享_李阳阳
- 骗赞小程序(仅供恶搞)
- Java 本地接口(JNI)编程指南和规范学习笔记2
- PT2262/2272遥控编解码集成电路
- Matlab如何在文件中写入空格和换行
- 如何查询linux的系统版本
- vue+springboot
- 计算机专业学渣面试,感觉读了计算机专业真的是一条不归路
- java 取10位时间戳_java里Date 10位时间戳(Timestamp) String 相互转换
- 阿里云搭建frp(其他云,通用)内网穿透
- 整型家族(字符、短整型、整型、长整型)的范围
热门文章
- 文件分段上传案列(参考b站小野森森老师的课)
- 树莓派Zero 2 W平台不同等级TF卡的性能对比
- Excel工作表事件(4)- 单元格修订记录跟踪
- HTC不仅不会卖而且还要收购同行
- Pythonxy下载链接
- 【010】翼辉信息首次亮相南京软博会
- VB+Access设计图书管理系统
- 虚拟机重启后再次重启nginx: [error] open() “/var/run/nginx/nginx.pid“ failed (2: No such file or directory)
- linux 远程文件拷贝
- bzImage、zImage