zoukankan      html  css  js  c++  java
  • Nginx使用ngx_zeromq模块返回502错误的解决方法

    /*********************************************************************
     * 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

  • 相关阅读:
    OC基础框架
    协议代理
    内存管理
    重写init或自定义init方法
    iOS输入框UITextField输入限制
    iOS 打包FrameWork
    iOS 持续往文件写入数据。
    ld: library not found for -lxxx 问题的解决办法
    iOS 侧滑返回过程中导航栏的黑色问题解决办法
    iOS 蓝牙分包发送数据
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5161254.html
Copyright © 2011-2022 走看看