Bu eklenti, @Andrew Moss'un ' VirtualHostsocket.io 1.0 ile çalışacak şekilde nasıl doğru bir şekilde yapılandırılacağı konusundaki cevabına! CentOS ile ilgili kısmı atlamaktan çekinmeyin!
CentOS 6’da kalmışsanız, işte nasıl yapılacağı:
mod_proxy_wstunnelModül için desteklenen kaynağı buradan indirin (Gist'i klonlayın veya dosyaları tek tek indirin)
- Oluşturmak için gereken her şeyi yükleyin:
yum install make gcc httpd-devel
- Bir Kurulum RPM Yapı ortamı (temelde ayrıcalığı olmayan bir kullanıcı ve bazı dizinleri)
- Kopya
.ciçine -Dosya SOURCESortamının alt klasör ve .speciçine -Dosya SPECSalt klasöründe.
- Çalıştırmak
rpmbuild -ba mod_proxy_wstunnel.spec
- Paket şimdi
SRPMSalt klasörde
- Paketi yükleyin:
rpm -i /path/to/package.rpm
- kâr
Bu aynı zamanda modülü otomatik olarak Apache'ye yükleyecektir, bu yüzden onu yeniden başlatmanız gerekir service httpd restart.
VirtualHostAslında Socket.io sunucusuna ve istemci betiğine hizmet etmek için (varsayılan olarak mevcut olan) a ayarlanması http://your.server/socket.io/socket.io.js, Apache 2.2'de, modüldeki bir Hatamod_proxy nedeniyle biraz daha karmaşıktır :
Aşağıdaki yeniden yazma kuralı verildiğinde:
RewriteRule ^/ws(.*)$ ws://localhost:9000/ws [P]
mod_rewrite Erişim günlüğünün gösterdiği şekilde buna bir dosya yolu olarak davranır:
[26/Sep/2013:09:46:07 -0400] "GET /ws://localhost:9000/ws HTTP/1.1" 400 317
Bu nedenle, yeniden yazma kuralında -protocol'u kullanamazsınızws , çünkü bu dahili olarak bir HTTP GET isteğine dönüşür.
Yine de bir geçici çözüm var:
<VirtualHost *:80>
ServerName your.server
# Proxy socket.io Websocket
RewriteEngine On
# socket.io 1.0+ starts all connections with an HTTP polling request
RewriteCond %{QUERY_STRING} transport=polling [NC]
RewriteRule /(.*) http://localhost:8081/$1 [P]
ProxyRequests Off
# Explicitly send the request for the client-script to HTTP:
ProxyPass /socket.io/socket.io.js http://localhost:8081/socket.io/socket.io.js
ProxyPassReverse /socket.io/socket.io.js http://localhost:8081/socket.io/socket.io.js
# Anything else goes to the WebSocket protocol:
ProxyPass /socket.io/ ws://localhost:8081/socket.io/
ProxyPassReverse /socket.io/ ws://localhost:8081/socket.io/
# Any additional stuff (the actual site) comes here
ProxyPass / http://localhost:8081/
ProxyPassReverse / http://localhost:8081/
</VirtualHost>
Bu her şeyin gönderilmesi emin kılan /socket.iogider ws://ve istemci kütüphanesi için isteğini (WebSockets kullanılmadığı bir geri dönüş mekanizması olan) uzun yoklama için istek dışında -Protokolü.
./buildconfigconfigure dosyası oluşturmak için koşmam gerekiyordu . Ve benim yüklememi söyleyen birkaç bağımlılık vardı.