我有Debian主机在NodeJS上运行我的Meteor应用程序,它监听:127.0.0.1:3999 我还有一个域名注册https://example.com,欢迎使用Apache并代理我的Meteor应用程序。
我的DDP连接有问题。
我的连接链接是ws://example.com/websocket
我将ProxyPass设置设置如下:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLProxyEngine On
ProxyRequests Off
SSLCertificateFile /etc/apache2/ssl/www.example.crt
SSLCertificateKeyFile /etc/apache2/ssl/www.example.key
SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem
ProxyPass /websocket ws://localhost:3999/websocket
ProxyPassReverse /websocket ws://localhost:3999/websocket
ProxyPassMatch ^/sockjs/(.*)/websocket ws://localhost:3999/sockjs/$1/websocket
ProxyPass / http://localhost:3999/
ProxyPassReverse / http://localhost:3999/
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLProxyEngine On
ProxyRequests Off
SSLCertificateFile /etc/apache2/ssl/www.example.crt
SSLCertificateKeyFile /etc/apache2/ssl/www.example.key
SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem
ProxyPass /websocket ws://localhost:3999/websocket
ProxyPassReverse /websocket ws://localhost:3999/websocket
ProxyPassMatch ^/sockjs/(.*)/websocket ws://localhost:3999/sockjs/$1/websocket
ProxyPass / http://localhost:3999/
ProxyPassReverse / http://localhost:3999/
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
和
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ProxyRequests off
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
# This allows DDP clients like ObjectiveDDP and Meteor-Unity to connect
RewriteRule ^/websocket wss://%{HTTP_HOST}/websocket [NC,R,L]
# This allows the meteor webapp to connect
RewriteRule ^/sockjs/(.*)/websocket wss://%{HTTP_HOST}/sockjs/$1/websocket [NC,R,L]
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
答案 0 :(得分:0)
我找到的解决方案是不使用debian,而是使用ubuntu,因此Apache 2.6可用。 mod_proxy_wstunnel解决了v2.6的问题。