Amazon-Ec2
使用 VirtualHost 訪問 Tomcat 目錄上的靜態文件
我從我的 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/
並將chown
其www-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>