Maison > développement back-end > Golang > Pourquoi ma configuration mod_proxy_wstunnel et Go-websocket échoue-t-elle et comment puis-je y remédier ?

Pourquoi ma configuration mod_proxy_wstunnel et Go-websocket échoue-t-elle et comment puis-je y remédier ?

DDD
Libérer: 2025-01-01 06:58:10
original
608 Les gens l'ont consulté

Why Does My mod_proxy_wstunnel and Go-websocket Setup Fail, and How Can I Fix It?

Mod_proxy_wstunnel et Go-websocket : un problème et sa résolution

Dans le but d'utiliser le mod_proxy_wstunnel d'Apache avec l'implémentation go-websocket, les utilisateurs peut rencontrer des obstacles. Un utilisateur a demandé de l'aide pour configurer les paramètres nécessaires.

Une description détaillée du problème a été fournie : alors que le proxy inverse s'est établi avec succès, la connexion websocket n'a pas pu s'initier. La configuration de l'utilisateur reflétait ce qui suit :

<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>
Copier après la connexion

Initialement, l'utilisateur a reçu une réponse « 403 Forbidden », qui suggérait un problème de vérification de l'origine. Après avoir désactivé la vérification de l'origine, l'erreur s'est transformée en « 400 Bad Request », indiquant que le serveur ne recevait pas la demande de mise à niveau.

Après avoir recueilli les recommandations de nombreuses sources, l'utilisateur est arrivé à une solution :

  1. Trailing Slash : Comme Aralo l'a souligné, ajout d'une barre oblique finale au chemin WebSocket ("/ws/") était crucial. Apache semble exiger une requête GET valide pour la gestion de WebSocket.
  2. Ordre ProxyPass : James Henstridge a correctement noté que l'ordre des directives ProxyPass est important. Le ProxyPass pour "/ws/" doit précéder le "/" général.
  3. Suppression de la vérification d'origine : L'exemple de code go-websocket incluait une vérification d'origine dans la fonction ServeWs(), qui a été supprimé.

La mise en œuvre de ces modifications a résolu le problème et l'utilisateur a pu établir avec succès la connexion Websocket derrière Apache. mod_proxy_wstunnel.

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal