Apache HTTPD: разрешение URL для виртуального хоста с прокси и псевдонимом каталога

Вот как выглядит моя среда:

  • REST API (django), работает через WSGI (mod_wsgi) на порту http://server:8107/api
  • статические файлы для сайта API (у меня есть несколько страниц администратора), в каталоге, скажем /opt/wsgi/staticfiles/subdomain
  • Веб-приложение (expressjs), работающее поверх pm2/nodejs, на 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 раньше всего?

* EDIT *: я запускаю Apache HTTPD 2.2.15 в дистрибутиве CentOS 6.5

1 ответ

Решение

Следующий conf это то, что вы ищете:

ProxyPass /api/static !

Он говорит Apache не принимать этот путь во внимание при маршрутизации содержимого в ваше прокси-приложение, поэтому он может иметь дело с другими видами доступа (здесь ваша директива Alias).

Другие вопросы по тегам