PHP websockets mit nginx über SSL

8

Wie man websockets mit PHP in nginx einrichtet?

Ich habe mir dieses Tutorial angesehen, kann es aber nicht funktionieren

Ссылка

Kopieren Sie die drei Dateien in das Stammverzeichnis des www-Verzeichnisses

/index.php %Code% /jquery-3.1.1.js

In /websocket/server.php Ich habe den URI

geändert %Vor%

In nginx habe ich das hinzugefügt

%Vor%

Ссылка

Um Websocket-Server zu starten

%Vor%

Der Chat befindet sich unter index.php und lädt, aber bekommt diesen Fehler im Chatfenster https://domain.com/chat.php

Habe auch versucht, eine Verbindung über dieses Tool herzustellen, bekomme aber diesen Fehler

Ссылка

%Vor%

Wird über den Browser angefordert

%Vor%     
clarkk 25.01.2017, 00:55
quelle

2 Antworten

2

Sie verwenden Port 9000 in Ihrer nginx-Konfiguration, während PHPs eingebauter Webserver auf Port 8000 läuft.

Versuchen Sie, den Port auf 8000 zu setzen und sehen Sie, ob das Problem behoben ist.

%Vor%

Bearbeiten:

In Bezug auf ERR_DISALLOWED_URL_SCHEME

Chrome erfordert seit Version 50, dass die Websocket-Kommunikation über SSL erfolgt. Wahrscheinlich müssen Sie dies aktivieren, damit Ihre App in Chrome funktioniert.

Sie haben zwei Möglichkeiten:

  1. Verwenden Sie ein Zertifikat, das von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wurde
  2. Fügen Sie das Zertifikat manuell zu Ihren vertrauenswürdigen Zertifikatsstammverzeichnissen hinzu. Ihre Webanwendung funktioniert nicht für Personen, die dies nicht manuell tun
Karl Buys 25.01.2017 13:52
quelle
1

Ich habe in Ihrer Konfigurationsdatei einige Fehler entdeckt. Meine Beobachtungen sind wie folgt:

  • Das Ausführen von php -q /var/www/websocket/server.php startet den einfachen Socket-Server. Es wird nicht SSL sein; Ich schätze, deswegen kommst du durch Nginx. nicht wahr?
  • Daher sollte proxy_pass https://domain.com:9000/websocket/server.php; nicht https sein. Sie benötigen auch nicht den vollständigen Pfad, da es sich um einen einfachen TCP-Socket handelt und nicht um einen Dateipfad. Also sollte nur proxy_pass http://127.0.0.1:9000; tun.
  • Wenn Sie SSL unter nginx implementieren; Wo sind diese Einstellungen?
  • In allen neuen Browsern; Sie können über eine gesicherte https-Seite nicht auf ungesicherte http- oder ws-Ressourcen zugreifen.

Das folgende ist meine Config-Datei, die wie beabsichtigt zu funktionieren scheint.

%Vor%

Nehmen Sie auch Änderungen in index.php in var wsUri = "wss://localhost:8443/websocket/";

vor     
Malay Sarkar 02.02.2017 19:27
quelle

Tags und Links