【问题标题】:Best practice to serve static files on Tomcat integrated with Apache [closed]在与 Apache 集成的 Tomcat 上提供静态文件的最佳实践 [关闭]
【发布时间】:2019-10-07 04:44:44
【问题描述】:

如果使用与 Apache 集成的 Tomcat(Web 服务器),我应该如何设置以使 Apache 为部署在 webapps 中的我的 war 文件中的所有静态文件(html、png、css、...)提供服务?使用符号链接?如果可能的话,我想在重新部署我的战争(包括更新的静态文件)后什么都不做。

例如,如果webapps 中我的应用程序的所有元素都是:

  • my-app/app.jsp => 应该由 Tomcat 返回
  • my-app/html/index.html => 应该由 Apache 返回
  • my-app/images/log.png => 应该由 Apache 返回
  • my-app/css/app.css => 应该由 Apache 返回

【问题讨论】:

    标签: apache tomcat web tomcat9


    【解决方案1】:

    见红帽solution

    在 /var/www/img 目录下创建图片 在httpd.conf中,有如下配置。

    <VirtualHost *:80>
     ServerName myapp.example.com
      DocumentRoot /var/www/
     Alias /images "/var/www/img/"  
      <Directory "/var/www/img">  
       Options +Indexes  
       AllowOverride None  
       Order allow,deny  
       Allow from all  
      </Directory>
     </VirtualHost>
    

    转到 url http://localhost/images,您应该会看到列出的图像。要防止目录列表,请删除 Options +Indexes。

    Tomcat 中的另一个选项

    Tomcat的server.xml配置文件

    <Host appBase="webapps"
           autoDeploy="false" name="localhost" unpackWARs="true"
           xmlNamespaceAware="false" xmlValidation="false">
    ...
    <Context docBase="/home/stuff" path="/static" />
    </Host>
    

    &lt;Context&gt; 元素被添加到 &lt;Host&gt; 元素内。上下文有两个属性:docBase 是磁盘上包含您的静态文件的目录,path 是您要在其上提供文件的 URL。

    【讨论】:

    • 是不是说my-app/html、images和css每次重新部署后都要移到/var/www/img?
    • @blackeyedcenter 是使用 apache 服务器(无 tomcat)处理静态文件的解决方案
    • @blackeyedcenter 添加了一个 tomcat 选项
    • 如果可能的话,我只想重新部署我的war文件,不想在war中移动静态文件。你的解决方案能做到吗?
    猜你喜欢
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2010-09-11
    相关资源
    最近更新 更多