Acessa arquivos estáticos no diretório Tomcat usando o VirtualHost

1

Estou executando um serviço da Web Java (JAX-WS) no Tomcat 8 da minha instância do AWS EC2 Linux e tenho um subdomínio apontando para o serviço, para que eu possa chamar o serviço com a URL http://services.example.com/api/myService1 . Esta é a configuração do VirtualHost:

<VirtualHost *:80>
    ServerName services.example.com
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:8080/Services/
    ProxyPassReverse / http://localhost:8080/Services/
</VirtualHost>

Agora eu gostaria de acessar alguns arquivos estáticos (imagens) armazenados no servidor. Onde devo armazená-los e como devo acessá-los?

Eu tentei armazená-los em /opt/tomcat/webapps/ROOT/example.jpg e chamá-los de http://services.example.com/example.jpg , mas não funciona.

    
por Arturo 29.06.2015 / 09:56

1 resposta

2

Crie um novo diretório, por exemplo, /opt/static/ e chown para www-data ou o equivalente em seu sistema operacional e coloque seu material estático lá. Isso vai totalmente ignorar o tomcat para os ativos estáticos (uma coisa boa IMO)

e, em seguida, altere sua definição de vhost para isso (suponho que todas as suas chamadas api estejam na URL da API - ela também ativará o cache do lado do cliente para os arquivos estáticos).

<VirtualHost *:80>
    ServerName services.example.com
    DocumentRoot /opt/static/

    #Cache static files for 1 month
    <FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
    Header set Cache-Control "max-age=2592000, public"
    </FilesMatch>

    <Location "/api/">
        ProxyRequests Off
        ProxyPreserveHost On
        <Proxy *>
            Order deny,allow
            Allow from all
        </Proxy>
        ProxyPass http://localhost:8080/Services/api
        ProxyPassReverse http://localhost:8080/Services/api
    </Location>
</VirtualHost>
    
por 30.06.2015 / 11:46