Estou executando um aplicativo WSGI. Ao acessar uma URL do aplicativo, por exemplo do meu navegador, eu recebo a página que estou pedindo. Mas também recebo um erro nos arquivos de log.
URL:
https://api.example.com/api/v0/api-docs/api-docs.json
Mensagem de erro:
[Tue Mar 07 17:43:52.331186 2017] [authz_core:error] [pid 23997] [client my.client.ip:59666] AH01630: client denied by server configuration: /var/www/html/api-docs
Este é o conteúdo do arquivo de configuração do apache do meu aplicativo.
<VirtualHost *:80>
ServerName api.example.com
Redirect permanent / https://api.example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName api.example.com
SSLEngine On
SSLCipherSuite HIGH:MEDIUM
SSLCertificateFile /etc/ssl/localcerts/apache.pem
SSLCertificateKeyFile /etc/ssl/localcerts/apache.key
# We may run multiple API versions in parallel
# http://stackoverflow.com/questions/18967441/add-a-prefix-to-all-flask-routes
# API v0
WSGIDaemonProcess api-v0 threads=5
WSGIScriptAlias /api/v0 /path/to/application/application.wsgi
WSGIPassAuthorization On
<Location /api/v0>
WSGIProcessGroup api-v0
</Location>
<Directory /path/to/application/>
Options FollowSymLinks
WSGIProcessGroup api-v0
WSGIApplicationGroup %{GLOBAL}
# WSGIScriptReloading On
Require all granted
</Directory>
# API v1
# ...
# I don't have a v1 yet on the server.
# This is not something I stripped for the example.
</VirtualHost>
Estou usando um certificado autoassinado, aceito no navegador do cliente. Eu não acho que deveria fazer alguma diferença ...
Apache 2.4.
A mensagem de erro é lida como se o apache estivesse buscando os arquivos em /var/www/html/
. Nesse caso, o erro seria compreensível. Exceto WSGIScriptAlias
é entendido corretamente desde que eu recebo o conteúdo da página, então o apache deve estar procurando em /path/to/application/
.
Consegui remover o aviso adicionando uma diretiva DocumentRoot
ao VirtualHost
.
<VirtualHost *:443>
DocumentRoot /path/to/application
ServerName api.example.com
Eu li os documentos sobre DocumentRoot e ainda não está claro para mim
A configuração padrão para * .443 (ssl) tem o padrão
DocumentRoot /var/www/html
Tags wsgi apache-httpd