Amazon-Ec2

使用 VirtualHost 訪問 Tomcat 目錄上的靜態文件

  • June 30, 2015

我從我的 AWS EC2 Linux 實例在 Tomcat 8 上執行 Java Web 服務 (JAX-WS),並且我有一個指向該服務的子域,因此我可以使用 URL 呼叫該服務http://services.example.com/api/myService1。這是虛擬主機配置:

<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/並將chownwww-data放置在您的作業系統上或等效的目錄中,然後將您的靜態內容放在那裡。這將完全繞過靜態資產的tomcat(一件好事IMO)

然後將您的虛擬主機定義更改為此(我假設您的所有 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>

引用自:https://serverfault.com/questions/702260