使用VirtualHost访问Tomcat目录上的静态文件

使用VirtualHost访问Tomcat目录上的静态文件

我正在从我的 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>

相关内容