Вот как выглядит моя среда:
http://server:8107/api
/opt/wsgi/staticfiles/subdomain
http://server:3002/
Мне нужно сгруппировать все это под виртуальным хостом на 80-м порту следующим образом:
Вот соответствующая часть конфигурации:
<VirtualHost *:80>
ServerName subdomain.server
ServerAlias subdomain.server.local
Alias /api/static/ /opt/wsgi/staticfiles/subdomain/
<Directory /opt/wsgi/staticfiles/subdomain/ >
Order Allow,Deny
Allow from All
Options -Indexes
IndexOptions Charset=UTF-8
</Directory>
ProxyPass /api http://127.0.0.1:8107/api
ProxyPassReverse /api http://127.0.0.1:8107/api
ProxyPass / http://127.0.0.1:3002/
ProxyPassReverse / http://127.0.0.1:3002/
</VirtualHost>
Теперь, когда я пытаюсь получить доступ к статическому ресурсу (скажем, например, /api/static/js/jquery.js
) я обнаружил, что URL-адрес не разрешается сначала директивой Alias, а скорее передается в приложение WSGI (/api
), что, очевидно, вызывает ошибку 404.
Изменение порядка директив не имеет никакого эффекта.
Что мне следует изменить, чтобы HTTPD работал /api/static
прежде всего?
* РЕДАКТИРОВАТЬ *: я запускаю Apache HTTPD 2.2.15 в дистрибутиве CentOS 6.5
Следующая conf - это то, что вы ищете:
ProxyPass /api/static !
Он сообщает Apache не принимать во внимание этот путь при маршрутизации данных в ваше проксируемое приложение, чтобы с ним можно было иметь дело с другим типом доступа (здесь ваша директива Alias).