Я запускаю веб-службу Java (JAX-WS) на Tomcat 8 из моего экземпляра AWS EC2 Linux, и у меня есть поддомен, указывающий на службу, так что я могу вызвать службу с URL-адресом http://services.example.com/api/myService1
. Это конфигурация 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>
Теперь я хотел бы получить доступ к некоторым статическим файлам (изображениям), хранящимся на сервере. Где их хранить и как получить к ним доступ?
Я пробовал хранить их на /opt/tomcat/webapps/ROOT/example.jpg
и называя их http://services.example.com/example.jpg
но это не работает.
Например, создайте новый каталог /opt/static/
и chown
это к www-data
или эквивалент в вашей ОС и поместите туда свои статические данные. Это полностью обойдет tomcat для статических активов (хорошая вещь, IMO)
а затем измените определение vhost на это (я предполагаю, что все ваши вызовы api находятся в URL-адресе api - это также включит кеширование на стороне клиента для статических файлов.)
<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>