Не удалось подключиться к веб-сокету Meteor с помощью Apache
Я развернул приложение Meteor в DO Droplet с помощью MeteorUp. Я настроил виртуальные хосты Apache для этого сайта следующим образом:
<VirtualHost *:80>
ServerName filipe-garcia.com
ServerAlias www.filipe-garcia.com
ServerAdmin me@filipe-garcia.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/sockjs/ [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /sockjs/ ws://localhost:3000/$1 [P,L]
ProxyPreserveHost On
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
Но я все еще получаю
Сбой подключения WebSocket к "ws://filipe-garcia.com/sockjs/622/9hwpvs81/websocket": ошибка во время рукопожатия WebSocket: непредвиденный код ответа: 400
ошибка на моей консоли. Я гуглил это и нашел множество решений (в основном вариации этого же VHosts), но безуспешно.
Все остальное, кажется, работает отлично, за исключением этой ошибки (которую я еще не чувствовал из-за этого, потому что это приложение еще не использует веб-сокеты).
Я не уверен, как мне это исправить. Я использую Apache 2.4.7 на Ubuntu 32bit, и у меня включены прокси, proxy_connect, proxy_http, proxy_wstunnel.
РЕДАКТИРОВАТЬ: Это должно быть связано с тем, как настроен прокси, потому что, если я указываю свой браузер на машину и порт, на котором он работает, эта ошибка не возникает.
В качестве крошечного бонусного вопроса, используя сервер nodejs, я должен удалить строку DocumentRoot файла или просто оставить ее там?
Спасибо.
1 ответ
Для меня.. просто добавив следующее к..sites-enabled..(ubuntu+apache), сработало для меня:
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
Убедитесь, что вы добавляете на сайты с поддержкой