2017-01-24 3 views
0

ich mit meiner Website in Rails 4. eingebaute eine seltsame Problem konfrontiert bin Während es die Entwicklung Ich testete die Streifen Webhook Ngrok verwendet, die fein ging so der Code sollte in Ordnung sein, aber jetzt in der Produktion Ich bekomme von Stripe Fehler, dass es keine Verbindung zum Webhook herstellen kann.Streifen Webhook Fehler konnte keine Verbindung

Darüber hinaus wollte ich einige Stresstests unter Verwendung Loader.io und nach addind der Host, wenn aufgefordert, um die Datei, die sie zum Hochladen auf den Root anfordern, zu überprüfen, schlägt es auch mit einem There was an error loading the URL Fehler fehl.

Das führt mich irgendwie zu der Annahme, dass etwas mit meiner Nginx-Konfiguration nicht stimmt, obwohl die Seite vom Browser aus funktioniert, ich habe Benutzer aus Nordamerika und Europa und habe keine Beschwerden über Timeouts oder langsame Geschwindigkeiten weit, obwohl es auf einem kleinen VPS läuft.

Hier ist die Nginx Host-Datei:

server { 
    listen 80; 
    listen 443 ssl http2; 

    ssl on; 
    ssl_certificate /var/lib/acme/live/example.com/fullchain; 
    ssl_certificate_key /var/lib/acme/live/example.com/privkey; 

    # Set up preferred secure protocols and ciphers. TLS1.2 is required for HTTP/2 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on; 
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA; 

    root /var/www/example/public; 
    server_name example.com; 
    if ($ssl_protocol = "") { 
    rewrite ^ https://$server_name$request_uri? permanent; 
    } 
    client_max_body_size 20M; 
    passenger_enabled on; 
    rails_env production; 

    # For issuing https certificates 
    location ^~ /.well-known/acme-challenge/ { 
    alias /var/www/acme-challenge/.well-known/acme-challenge/; 
    } 

    location ~* ^/assets/ { 
    # Per RFC2616 - 1 year maximum expiry 
    # http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 
    expires 1y; 
    add_header Cache-Control public; 

    # Some browsers still send conditional-GET requests if there's a 
    # Last-Modified header or an ETag header even if they haven't 
    # reached the expiry date sent in the Expires header. 
    add_header Last-Modified ""; 
    add_header ETag ""; 
    break; 
    } 
} 

Und hier ist der Rails Teil

Routen

match 'stripe/webhook' => 'stripe#webhook', via: [:post, :get], as: :stripe_webhook 

-Controller

class StripeController < ApplicationController 

    protect_from_forgery :except => [:subscription, :webhook] #Otherwise the request from Stripe wouldn't make it to the controller 
    skip_before_action :require_login, only: [:webhook] 

    def webhook 
    Stripe.api_key = 'SECRET' 

    begin 
     event_json = JSON.parse(request.body.read) 

     #make sure this is the real deal by verifying the event by fetching it from Stripe 
     if event.has_key?("id") 
     event = Stripe::Event.retrieve(event_json["id"]) 

     txt = 'OK' 
     handle_transaction(event) 
     else 
     txt = 'ERROR' 
     end 
     render plain: txt, layout: false, status: 200 
    rescue => e 
     Rails.logger.info "===================== ERROR ===================" 
     Rails.logger.info e.inspect 
     render plain: 'ERROR', layout: false, status: 500 
    end 
    end 

    #rest of the actions and private methods 
    #(...) 

end 

Eine Idee, warum das passiert?

Antwort

Verwandte Themen