Я заметил странную ошибку при обслуживании приложения Django через mod_wsgi.
В корне моего документа у меня есть /admin
каталог, который ограничен 127.0.0.1, используя LocationMatch
директива. у меня тоже есть /admin
URLConf установлен в / в приложении Django, что является стандартным путем для автоматически сгенерированного интерфейса администратора Django. Само приложение находится под /app
путь, настроенный с WSGIScriptAlias
директива.
Теперь Apache как-то обрабатывает каждый запрос для /app/admin
и это подпути, как указано в корне приложения и документа. У меня отображается администратор Django, но error.log содержит такую строку: [Tue Feb 14 01:25:35.538501 2017] [authz_core:error] [pid 29235] [client 32.135.203.150:36412] AH01630: client denied by server configuration: /var/www/html/admin/
Это почти не проблема, если не считать двух вещей:
Это решается путем переименования моего html-каталога или административного приложения Django, но я бы очень хотел найти правильное решение, которое позволит мне иметь и то, и другое.
Конфигурация Apache в Debian разделена на несколько файлов, но я считаю, что соответствующие части следующие:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Include conf-available/default.conf
DocumentRoot /var/www/html
<LocationMatch ^/admin>
Require ip 127.0.0.1 ::1
</LocationMatch>
<LocationMatch ^/admin/status>
SetHandler server-status
</LocationMatch>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
SetEnvIf Request_URI "/admin/status" nolog
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!nolog
</VirtualHost>
default.conf:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
DirectoryIndex disabled
AllowOverride Indexes
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
Alias /app/static/ /var/www/app/static/
Alias /app/media/ /var/www/app/media/
<Directory /var/www/app/static>
Require all granted
</Directory>
<Directory /var/www/app/media>
Require all granted
</Directory>
WSGIDaemonProcess pbf.net.pl python-path=/var/www/app:/usr/local/virtualenvs/app/lib/python3.4/site-packages/
WSGIProcessGroup app
WSGIScriptAlias /app /var/www/app/wsgi.py process-group=app
# WSGIPythonPath /var/www/app/
<Directory /var/www/app>
<Files wsgi.py>
Require all granted
</Files>
</Directory>