Apache HTTPD: resolução de URL para um host virtual com proxies e alias de diretório

1

Veja como meu ambiente se parece:

  • API REST (django), executando o WSGI (mod_wsgi) na porta http://server:8107/api
  • arquivos estáticos para o site da API (eu tenho algumas páginas de administração), em um diretório, digamos /opt/wsgi/staticfiles/subdomain
  • Aplicativo da Web (expressjs), em execução em pm2 / nodejs, em http://server:3002/

Eu preciso agrupar tudo isso em um host virtual na porta 80 da seguinte forma:

  • link : a API restante
  • link : os arquivos estáticos necessários ao site da API
  • link : o aplicativo da web

Aqui está a parte relevante da configuração:

<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>

Agora, quando tento acessar um recurso estático (digamos, por exemplo, /api/static/js/jquery.js ), descubro que a URL não é resolvida primeiro pela diretiva Alias, mas passada para o aplicativo WSGI ( /api ), que então, obviamente, dispara um erro 404.

Reordenar as diretivas parece não ter nenhum efeito.

O que devo alterar para garantir que o HTTPD veiculará /api/static antes de qualquer outra coisa?

*EDIT*: I run Apache HTTPD 2.2.15 under a CentOS 6.5 distro
    
por Olivier H 24.08.2016 / 17:11

1 resposta

2

O seguinte conf é o que você está procurando:

ProxyPass /api/static !

Ele diz ao Apache para não levar este caminho em consideração ao rotear o material para seu aplicativo proxy, para que ele possa ser tratado com outro tipo de acesso (aqui sua diretiva Alias).

    
por 24.08.2016 / 17:43