Я новичок в управлении сервером, так что терпите меня.
У меня есть облачный сервер Microsoft Azure (не по выбору) под управлением Ubuntu 16.04 и Apache 2.4.18. У меня есть несколько приложений (/ omeka, / wordpress и т. Д.), Работающих в веб-подкаталогах, к которым я могу получить доступ через любой веб-браузер и не требует каких-либо конкретных прокси-серверов или пересылки портов. Я пытаюсь запустить другое приложение (ArchivesSpace) в другом веб-подкаталоге (/ archivesspace). Приложение имеет несколько точек взаимодействия на разных портах:
localhost: 8089 / - бэкэнд
localhost: 8080 / - штатный интерфейс
localhost: 8081 / - публичный интерфейс
localhost: 8090 / - консоль администратора Solr
Я успешно установил AS. Я могу сказать, потому что при подключении к серверу через SSH я могу использовать $ curl localhost:8080
а на выходе получается HTML-код домашней страницы AS.
Мой netstat
показывает:
Proto Recv-Q Send-Q Local Address Foreign Address State PID
tcp6 0 0 :::8080 :::* LISTEN 1985/java
tcp6 0 0 :::8081 :::* LISTEN 1985/java
tcp6 0 0 :::8089 :::* LISTEN 1985/java
tcp6 0 0 :::8090 :::* LISTEN 1985/java
Я не могу получить доступ ни к одному из этих портов из браузера. Я всегда получаю ERR_EMPTY_RESPONSE
ошибка.
Я пробовал поговорить об этом с людьми ArchivesSpace, и их последнее слово было в основном «настроить Apache как обратный прокси». Итак, я пробовал это делать, и мне не повезло. Я надеюсь, что здесь кто-нибудь поможет. Вот что у меня есть для обратного прокси в моем файле 000-default.conf, я просто пытаюсь заставить работать один из портов (8080).
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
</VirtualHost>
Listen 8080
<VirtualHost *:8080>
ProxyHTMLStripComments on
ProxyRequests off
SetOutputFilter proxy-html
ProxyHTMLDoctype XHTML
ProxyPreserveHost On
ServerName http://server.net/archivesspace
<Location />
ProxyPass http://server.net:8080
ProxyPassReverse http://server.net:8080
Order allow,deny
Allow from all
</Location>
</VirtualHost>
Я включил все эти моды Apache: proxy, proxy_ajp, proxy_http, rewrite, deflate, headers, proxy_balancer, proxy_connect, proxy_html
Я явно что-то не так делаю, просто понятия не имею что. Я также даже не совсем уверен, какие URL-адреса мне нужны. Я предполагаю, что server.net:8081 (или, может быть, server.net:8081/archivesspace?) Должен привести вас к общедоступному интерфейсу AS. В идеале это будет server.net/archivesspace. Верный ли обратный прокси-сервер?
Инструкции для apache-2.4
тег сказать, чтобы опубликовать вывод apache2ctl -S
, так вот это.
[Wed Feb 15 16:34:59.401845 2017] [proxy_html:notice] [pid 3722] AH01425: I18n support in mod_proxy_html requires mod_xml2enc. Without it, non-ASCII characters in proxied pages are likely to display incorrectly.
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.2.0.4. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:80 10.2.0.4 (/etc/apache2/sites-enabled/000-default.conf:1)
*:8080 server.net/archivesspace (/etc/apache2/sites-enabled/000-default.conf:34)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex rewrite-map: using_defaults
Mutex proxy: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33 not_used
Group: name="www-data" id=33 not_used
Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию, которая помогла бы определить мою проблему. Заранее благодарим за любые рекомендации, которые вы можете предложить.
Большое спасибо за это, Патрик! Это сработало. Я удалил все, кроме VirtualHost *:80
блок и добавил в него:
<Location /archivesspace>
ProxyPass http://localhost:8081
ProxyPassReverse http://localhost:8081
Order allow,deny
Allow from all
</Location>
<Location /archivesspace/admin>
ProxyPass http://localhost:8080
ProxyPassReverse http://localhost:8080
Order allow,deny
Allow from all
</Location>
Также обратите внимание, что порядок этих двух Location
блоки важно. Если 8080 / admin указан первым, порт 8081 должен иметь подкаталог ниже / archivesspace (то есть / archivesspace / home), что не идеально. Если сначала указать 8081, будет доступен только / archivesspace.
Однако теперь, когда я могу получить доступ к страницам через браузер, похоже, что все CSS, изображения и тому подобное отсутствуют. Но это еще одна проблема, по которой мне, возможно, придется начать новый пост, если я не смогу это понять.
ОБНОВЛЕНИЕ: разобрался с материалом CSS. В файле config / config.rb необходимо изменить следующее:
AppConfig[:frontend_proxy_url] = "http://server.net/archivesspace/admin"
AppConfig[:public_proxy_url] = "http://server.net/archivesspace"
Говоря VirtualHost *:8080
вы говорите Apache прослушивать этот порт, что невозможно, поскольку ваше приложение Java уже прослушивает его. Вместо этого вам нужно в своем VirtualHost *:80
блок для добавления строк, таких как <Location /ArchivesSpaces/staff>
с ProxyPass / ProxyPassReverse на ваш сервер (или localhost): 8080 внутри блока Location и таким же образом для остальных 3 портов. Вы можете выбрать все, что хотите в пути к местоположению.