我有一个在Docker容器中运行的Django应用程序。我的Apache配置在提供静态文件时遇到问题。
- 我的django应用程序在docker容器中工作,Apache正确地将请求路由到它
- 我确保设置了
STATIC_URL = "/static/"
和DEBUG = False
设置属性 - 我确保收集静态到
/var/www/my_app/static/
目录 - 我确保目录
/var/www/my_app
对apache有正确的访问权限:drwxr-xr-x 3 www-data www-data 4,0K June 11 16:25 my_app
这是我的Apache配置:
<VirtualHost 000.00.0.000:443>
ServerName my_app.com
SSLEngine on
SSLProxyEngine on
SSLCertificateFile /etc/apache2/certs/cert.pem
SSLCertificateKeyFile /etc/apache2/certs/cert.key
SSLCACertificateFile /etc/apache2/certs/DigiCertCA.crt
CustomLog /var/log/apache2/my_app.log combined
ErrorLog /var/log/apache2/my_app.log
ProxyPass /static !
Alias /static/ /var/www/my_app/static/
<Directory /var/www/my_app/static/>
Require all granted
</Directory>
<Location />
ProxyPass http://localhost:6000/
ProxyPassReverse http://localhost:6000/
ProxyPreserveHost on
</Location>
</VirtualHost>
当我评论:
<Location />
ProxyPass http://localhost:6000/
ProxyPassReverse http://localhost:6000/
ProxyPreserveHost on
</Location>
比我的静态文件更好。所以看起来有一些问题,配置的这一部分优先。
你能帮我解决这个问题吗?
1条答案
按热度按时间c9qzyr3d1#
Apache的Web服务器优先级顺序非常复杂,这里有文档说明,但here解释得很好。在本例中,
Location
块中的ProxyPass
优先,因为它赢得了最后一个匹配。您可以安排您的配置并将<Directory>
指令放在<Location>
块下面,或者您可以在最后创建另一个<Location /my_app/static/
块,这将帮助您更好地评估哪个块将匹配什么。