Nginx使用ngx_zeromq模块返回502错误的解决方法
2016-01-26 18:21
746 查看
/********************************************************************* * Author : Samson * Date : 06/23/2015 * Test platform: * gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2 * GNU bash, 4.3.11(1)-release (x86_64-pc-linux-gnu) * Nginx version: * Nginx 1.6.2 * Nginx 1.8.0 * *******************************************************************/
当使用了ngx_zeromq模块在nginx中,使用下面命令进行编译安装:
./configure --with-debug --add-module=./zeromq_module/ngx_zeromq/ --with-http_ssl_module
开启一个zero_mq的ZMQ_REP模式的服务端程序,那么在web中输入http://127.0.0.1/时,返回502页面,再查看默认编译安装文件夹/usr/local/nginx/logs/error.log日志中,能够看到下面的错误导致的:
2015/06/22 23:46:28 [alert] 43143#0: *1 connect() failed (88: Socket operation on non-socket) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://tcp://127.0.0.1:5555/", host:
"127.0.0.1"
找到此行错误的代码所在文件为:
src/http/ngx_http_upstream.c中的ngx_http_upstream_test_connect函数中。原来是因为getsockopt造成的,那么怎样解决问题呢?
经过自己写zeromq的REQ和REP模式的方法后,相同使用zeromq创建的连接的socketfd来使用getsockopt来进行使用,也会出现这种错误,可是这并没有影响zeromq本身的通信。那也即是说nginx中的upstream模块中的getsockopt这种方法出错了对于zeromq来说无关紧要,那么将ngx_http_upstream_test_connect函数直接返回NGX_OK就可以解决问题。再进行安装測试就可以正常看到页面了。
REF:
ngx_zeromq模块:
https://github.com/FRiCKLE/ngx_zeromq
測试ngx_zeromqproject:
https://github.com/jamesmarlowe/ngx-zmq-sample
相关文章推荐
- WordPress程序伪静态规则(Nginx/Apache)及二级目录规则
- Nginx+Lua开发入门
- nginx高可用负载均衡配置
- Nginx安装 与使用 转载
- nginx安装与使用
- zabbix管理七之监控nginx性能
- DJANGO技巧两则:模拟MKDIR -P及配合NGINX上传大文件不使超时
- Nginx配置文件详细说明
- flume nginx 日志处理异常 JsonParseException: Unexpected character ('(' (code 40)): expected a valid value
- nginx 配置其他路径
- nginx connection failed due to Permission denied on CentOS7
- nginx启动、重启、关闭
- 最佳Nginx日志分析工具Goaccess
- nginx自动切割访问日志
- Nginx + Apache 公用 80 端口的配置方案。
- nginx日志自动按天分隔
- 主备切换,双机热备,负载均衡,nginx
- 从源码角度理解nginx和uwsgi的通信过程
- nginx_lua 扩展让 nginx 拥有可编程能力
- nginx后端服务器返回给nginx502、504、404、执行超时等错误状态的解决方法