Apache2

使用 Apache2 提供靜態內容

  • August 25, 2021

我對 apache2 真的很陌生,以前曾使用過 Nginx。我正在嘗試在 apache2 中使用別名來提供靜態內容。從一個簡單的例子開始。

我試過,它也沒有用。建議?

000-default.conf:

<VirtualHost *:80>
   ServerAdmin webmaster@localhost
   ServerName 13.67.35.134
   Alias /static /home/ubuntu/static
   <Directory /home/ubuntu/static/>
       Options FollowSymLinks
   </Directory>
   ProxyPass / http://127.0.0.1:5000/
</VirtualHost>

我也根據這個答案用引號嘗試了它:

<VirtualHost *:80>
   ServerAdmin webmaster@localhost
   ServerName 13.67.35.134
   Alias /static "/home/ubuntu/static"
   <Directory "/home/ubuntu/static">
       Options FollowSymLinks
   </Directory>
   ProxyPass / http://127.0.0.1:5000/
</VirtualHost>

我的 logo.png 位於

/home/ubuntu/static/logo.png

別名模組已啟用:

$ apache2ctl -M | grep alias
alias_module (shared)

當我輸入 13.67.35.134/static/logo.png 時,我得到一個404,這是 access.log

[26/Jan/2018:02:31:02 +0000] "GET /static/logo.png HTTP/1.1" 404 423 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"

解決方案

感謝@AndrewSchulman 指出我的 000-default.conf 文件中的代理通行證導致無法訪問我的靜態內容。

除非您在 localhost:5000 上執行另一個 Web 伺服器(我不知道您為什麼要這樣做,除了我猜的測試),您應該刪除該ProxyPass / http://127.0.0.1:5000/指令。

我看到這已解決,但對於遇到此問題並需要保留 ProxyPass 配置的任何其他人,您可以指定忽略靜態 URL(在 Alias 和 ProxyPass 配置行之間的某個點,添加ProxyPass /static !)。(此處有關靜態文件和 ProxyPass 的相關問答)

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