Конфигурация Apache2 VirtualHost (ProxyPass и Alias) работает в Ubuntu, но не в OSX
Я годами использую машину Ubuntu для своей среды разработки и пытаюсь перейти на OSX (Mountain Lion). Единственный сбой на этом этапе - конфигурация apache2.
На машине Ubuntu "apache2 -v" показывает
Server version: Apache/2.2.22 (Ubuntu)
Server built: Nov 8 2012 21:37:30
На машине OSX "httpd -v" показывает
Server version: Apache/2.2.22 (Unix)
Server built: Aug 24 2012 17:16:58
Таким образом, вы можете себе представить, что я полностью сбит с толку относительно того, почему конфигурация виртуального хоста плохо переносится.
Следующие биты ProxyPass и Alias моей конфигурации VirtualHost работают очень хорошо, когда используются на моем первом экземпляре apache2, но не на втором. Структура каталогов на обеих машинах
Для всех намерений и целей, конфигурация виртуального хоста выглядит следующим образом
NameVirtualHost *:80
<VirtualHost *:80>
ProxyPass /img !
Alias /img /somedir/media/img
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
целью является то, что apache будет обслуживать все изображения, а сервер приложений на порту 8080 выполняет тяжелую работу (общая схема).
В Ubuntu это прекрасно работает. На MacBook изображения не обслуживаются.
2 ответа
Оказывается, конфигурация apache по умолчанию определяет очень ограниченную конфигурацию сайта по умолчанию. Комментируя это и перезагружая сервер, все было хорошо.
Убедитесь, что прокси-модуль загружается. Это можно сделать с помощью строки конфигурации динамической загрузки в файле conf:
LoadModule proxy_http_module modules/mod_proxy_http.so
Или скомпилирован в Apache:
./httpd -l | grep proxy
mod_proxy.c
mod_proxy_connect.c
mod_proxy_ftp.c
mod_proxy_http.c
mod_proxy_scgi.c
mod_proxy_ajp.c
mod_proxy_balancer.c
Скорее всего, вы можете получить mod_proxy_http.so с другого сервера.