Я развернул приложение 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 файла или просто оставить ее там?
Спасибо.