我正在从我的 AWS EC2 Linux 实例在 Tomcat 8 上运行 Java web 服务 (JAX-WS),并且我有一个指向该服务的子域,以便我可以使用 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
但没有效果。
答案1
例如,创建一个新目录/opt/static/
,chown
将其设置为www-data
或操作系统上的等效目录,然后将静态内容放入其中。这将完全绕过 tomcat 的静态资产(在我看来这是件好事)
然后将您的 vhost 定义更改为此(我假设您的所有 api 调用都在 api url 中 - 它也将为静态文件启用客户端缓存。)
<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>