Назад | Перейти на главную страницу

Обратный прокси-сервер Apache для Cloud9 с использованием ServerName

Я пытаюсь настроить обратный прокси-сервер для экземпляра Cloud9, работающего локально на моем сервере с помощью Apache. У меня следующая установка:

<VirtualHost *:80>
  ProxyPreserveHost On
  ProxyPass / http://localhost:3131/
  ProxyPassReverse / http://localhost:3131/
  ServerAdmin cloud9@mydomain.org
  ServerName cloud9.mydomain.org
</VirtualHost>

Я также попытался изменить порядок директив, чтобы сначала были ServerAdmin и ServerName. Пока, если я ударил http://cloud9.mydomain.org, Я получаю сообщение об ошибке браузера о невозможности подключения. В Apache access.log или error.log ничего не регистрируется. Я думаю, что мне не хватает какой-то части, но я еще не уверен, что это за недостающая часть. Я также не знаю, в правильном ли я месте ищу журналы. Процесс Cloud9 был запущен и, похоже, работает на порту 3131.

Я не планирую запускать Cloud9 широко. Конечная цель, к которой я стремлюсь, состоит в том, чтобы в конечном итоге получить Cloud9, размещенный через SSL, с использованием некоторой аутентификации, может быть, базовой аутентификации, но я подумал, прежде чем я начал добавлять SSL и аутентификацию в микс, мне, вероятно, сначала нужно заставить работать основы.

Обновить Выход apachectl -S:

# apachectl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server www.mydomain.org (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost www.mydomain.org (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost wp.mydomain.org (/etc/apache2/sites-enabled/001-wordpress:1)
         port 80 namevhost blog.mydomain.org (/etc/apache2/sites-enabled/001-wordpress:22)
         port 80 namevhost cloud9.mydomain.org (/etc/apache2/sites-enabled/003-cloud9:1)
Syntax OK

Выход curl -I cloud9.mydomain.org:

curl: (6) Couldn't resolve host 'cloud9.mydomain.org'

Выход curl -I localhost:3131:

HTTP/1.1 403 Forbidden
Content-Type: text/plain
Content-Length: 9
Set-Cookie: cloud9.sid.3131=bqk4zxV4ETq9rrO79E4mkJn9.YW7gMDRCsOO95utQJy1mYm8LfTfZC%2F7Fx59DeFRFDpU; path=/; expires=Thu, 19 Sep 2013 02:07:41 GMT; httpOnly
Date: Wed, 18 Sep 2013 22

Когда я пытаюсь зайти на сайт извне с помощью Chrome, я получаю:

Ой! Google Chrome не может найти cloud9.mydomain.org

Возможно, вы имели в виду: mydomain.org

Какую страницу по умолчанию отображает Chrome, когда не может подключиться. Опять же, я не вижу никаких ошибок в access.log или error.log, если только по какой-то причине он не регистрируется в одном и том же месте. Я иду в /var/log/apache2 и делать ls -lart чтобы убедиться, что я вижу последний файл журнала.

Не очень красиво, но это работает как для HTTP, так и для SSL без изменений в Cloud9.

Необходимый модуль Apache: mod_proxy_wstunnel (Я думаю, доступно в Apache 2.4, а также доступны руководства по сборке для Apache 2.2.x, например http://www.amoss.me.uk/2013/06/apache-2-2-websocket-proxying-ubuntu-mod_proxy_wstunnel/).

ProxyPreserveHost On

RewriteEngine On
RewriteCond %{QUERY_STRING} transport=polling
RewriteRule ^(.*)smith.io(.*) /polling [P]

<Location />
   ProxyPass http://localhost:3131/
   ProxyPassReverse http://localhost:3131/
</Location>
<Location /smith.io>
   ProxyPass ws://localhost:3131/smith.io
   ProxyPassReverse ws://localhost:3131/smith.io
</Location>
<Location /polling>
   ProxyPass http://localhost:3131/smith.io/server
   ProxyPassReverse http://localhost:3131/smith.io/server
</Location>

<VirtualHost *.80> - измените это на <VirtualHost *:80>.

Это может быть все, что нужно, но если нет, можете ли вы предоставить результат apachectl -S?