Facebook messenger机器人回调网址卷曲错误35

时间:2017-08-30 06:38:12

标签: facebook curl nginx

我正在尝试创建一个facebook messenger机器人。每件事都在工作。然后我把它转移到我自己的服务器上。然后我得到错误“curl errno = 35”我尝试使用ngrok在服务器上正常工作但不能与我的服务器一起工作。

使用debian与nginx x和letsencrypt。

网址是preetombot.bddevwork.net

我的设置

server {
    listen 80;
    server_name preetombot.bddevwork.net www.preetombot.bddevwork.net;
    #root /usr/share/nginx/www/preetombot.bddevwork.net;
    #return 301 https://$server_name$request_uri;
    }
server {
    listen 443 default_server ssl http2;
    server_name preetombot.bddevwork.net 
www.preetombot.bddevwork.net;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_certificate /etc/letsencrypt/live/preetombot.bddevwork.net/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/preetombot.bddevwork.net/privkey.pem;
    ssl_trusted_certificate /test/ca-certs.pem;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM$
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_dhparam /test/dhparam.pem;
    root /usr/share/nginx/www/preetombot.bddevwork.net;
    index index.php index.html index.htm;
    location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For 
$proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_pass http://localhost:5000$request_uri;
            proxy_redirect off;
            proxy_http_version 1.1;
    }
     location ~ /.well-known{
                allow all;
                    }

    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
            expires 365d;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
            root /usr/share/nginx/www;
    }
location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME 
$document_root$fastcgi_script_name;
            include fastcgi_params;
            }
}

1 个答案:

答案 0 :(得分:0)

我在一台服务器上监听多个安全端口,在这种情况下,FB bot我正在使用端口8083。

upstream botd {
        server application_1:8083 max_fails=3 fail_timeout=30s;
        keepalive 64;
}

server {
    listen 443 default_server;
    listen [::]:443 default_server;

    # SSL configuration
    #
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server;
    #
    # Note: You should disable gzip for SSL traffic.
    # See: https://bugs.debian.org/773332
    #
    # Read up on ssl_ciphers to ensure a secure configuration.
    # See: https://bugs.debian.org/765782
    #
    # Self signed certs generated by the ssl-cert package
    # Don't use them in a production server!
    #
    # include snippets/snakeoil.conf;

    rewrite_log on;
    ssl on;
    server_name _;
    access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log debug;

    ssl_certificate /etc/ssl/techie8.io/api.techie8.io.bundle;
    ssl_certificate_key /etc/ssl/techie8.io/api.techie8.io.key;

    # Botd skill.
        location /botd {

                proxy_redirect off;
                if (!-f $request_filename) {
                        proxy_pass http://botd;
                        break;
                }

        }

    # Techie8 API.
    location / {
            proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;

        #Timeout after 8 hours
        proxy_read_timeout 43200000;
        proxy_connect_timeout 43200000;

            proxy_redirect off;
            if (!-f $request_filename) {
                    proxy_pass http://application;
                    break;
            }
        }

}

在Flask App中:

@app.route('/botd', methods=['GET'])
def handle_verification():
    """Handle Token verification."""

    print "Handling Verification."
    if request.args.get('hub.verify_token') == VERIFY_TOKEN:
        print "Verification successful!"
        return request.args.get('hub.challenge')
    else:
        print "Verification failed!"
        return 'Error, wrong validation token'


@app.route('/botd', methods=['POST'])
def handle_messages():
    print "Handling Incoming Messages\n"
    payload = request.get_data()
    print payload
    for sender, message in messaging_events(payload):
        print "Incoming Message from %s: %s" % (sender, message)
        print ("Access Token: %s" % ACCESS_TOKEN)
        send_message(ACCESS_TOKEN, sender, message)
    return "ok"

在Facebook WebHook回调URL我配置了我的主机:  https://api.mycompany.io/botd