Maison >développement back-end >Golang >Comment réussir l'intégration de Go-WebSocket avec Apache mod_proxy_wstunnel ?

Comment réussir l'intégration de Go-WebSocket avec Apache mod_proxy_wstunnel ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-25 21:26:17930parcourir

How to Successfully Integrate Go-WebSocket with Apache mod_proxy_wstunnel?

Intégration de Go-WebSocket derrière Apache mod_proxy_wstunnel

Dans le but d'exploiter les capacités du proxy inverse d'Apache avec go-websocket, un développeur a rencontré plusieurs obstacles.

Apache Configuration

Voici la configuration Apache utilisée :

<VirtualHost *:80>
    DocumentRoot /var/www/foobar
    ServerName foobar.com
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    ProxyPass /ws/ ws://localhost:8080/ws/
    ProxyPassReverse /ws/ ws://localhost:8080/ws/
    ErrorLog logs/error_log-foobar
    CustomLog logs/access_log-foobar common
    LogLevel debug
</VirtualHost>

Erreurs initiales

Lors de la mise en œuvre initiale, une erreur 403 interdite s'est produite, indiquant un problème avec la vérification de l'origine. Après avoir désactivé la vérification de l'origine, une erreur 400 Bad Request est apparue, signifiant que le serveur de chat ne recevait pas la demande de mise à niveau.

Dépannage

Après avoir consulté diverses sources, le les étapes suivantes ont été prises pour résoudre le problème :

  • Trailing Slash : Comme suggéré par Aralo, une barre oblique finale a été ajoutée au chemin WebSocket (/ws/). Cela garantissait qu'Apache ne gérerait WebSocket qu'avec une requête GET valide.
  • Ordre ProxyPass : Selon la suggestion de James Henstridge, le ProxyPass pour /ws/ a été placé avant la ligne /, modifiant l'ordre dans quelles demandes ont été traitées.
  • Suppression du contrôle d'origine :Le contrôle d'origine dans le La fonction ServeWs() a été identifiée et supprimée, résolvant le problème.

Intégration réussie

Ces modifications ont assuré une intégration réussie de go-websocket derrière Apache mod_proxy_wstunnel. Les journaux d'erreurs Apache ont permis d'identifier et de rectifier les erreurs initiales.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Profilage de la mémoire en GoArticle suivant:Profilage de la mémoire en Go