使用 Apache2 提供静态内容

使用 Apache2 提供静态内容

我对 apache2 还很陌生,之前用过 Nginx。我尝试在 apache2 中使用别名来提供静态内容。从一个简单的例子开始。

我试过但它也没用。有什么建议吗?

000-默认.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

alias_module 已启用:

$ 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 文件中的代理密码影响了访问我的静态内容的能力。

答案1

除非您在 localhost:5000 上运行另一个 Web 服务器(我不知道您为什么要这样做,我猜除了测试之外),否则您应该删除该ProxyPass / http://127.0.0.1:5000/指令。

答案2

我看到这个问题已经解决了,但是对于遇到此问题并需要保留 ProxyPass 配置的其他任何人,您可以指定忽略静态 URL(在 Alias 和 ProxyPass 配置行之间的某个位置添加ProxyPass /static !)。(有关静态文件和 ProxyPass 的相关问答这里

相关内容