我对 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 的相关问答这里)