Home >Backend Development >Golang >How to Successfully Integrate Go-WebSocket with Apache mod_proxy_wstunnel?

How to Successfully Integrate Go-WebSocket with Apache mod_proxy_wstunnel?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-25 21:26:171043browse

How to Successfully Integrate Go-WebSocket with Apache mod_proxy_wstunnel?

Integrating Go-WebSocket behind Apache mod_proxy_wstunnel

In an attempt to harness the capabilities of Apache's reverse proxy with go-websocket, a developer encountered several hurdles.

Apache Configuration

Following is the Apache configuration used:

<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>

Initial Errors

Upon initial implementation, a 403 Forbidden error occurred, indicating an issue with origin check. After disabling the origin check, a 400 Bad Request error emerged, signifying that the chat server was not receiving the upgrade request.

Troubleshooting

After consulting various sources, the following steps were taken to resolve the issue:

  • Trailing Slash: As suggested by Aralo, a trailing slash was added to the WebSocket path (/ws/). This ensured Apache would only handle WebSocket with a valid GET request.
  • ProxyPass Order: Per James Henstridge's suggestion, the ProxyPass for /ws/ was placed before the / line, altering the order in which requests were handled.
  • Origin Check Removal: The origin check within the ServeWs() function was identified and removed, resolving the issue.

Successful Integration

These modifications ensured successful integration of go-websocket behind Apache mod_proxy_wstunnel. The Apache error logs helped identify and rectify the initial errors.

The above is the detailed content of How to Successfully Integrate Go-WebSocket with Apache mod_proxy_wstunnel?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:Profiling Memory In GoNext article:Profiling Memory In Go