私はFlaskのウェブサイトを持ち、Ubuntu 14.04でmod_wsgi(3.4)とApache(2.4.7)を提供しています。仮想ホストの設定には、Flaskアプリ用のディレクトリブロックと、静的なファイルのディレクトリ用のディレクトリブロックの2つのディレクトリブロックがあり、Flaskアプリは時々XMLHttpRequest
経由で取り出します。localhostからXMLHttpRequestを除くすべてのリクエストを拒否するようにApacheを設定するにはどうすればよいですか?
私は静的ファイルのディレクトリがFlaskアプリケーションからの要求にしかアクセスできないようにしたいと思いますが、これを行うためにApacheを設定する際に問題があります。私はRequire local
、Require ip 127.0.0.1
とRequire sd.d.com
を試しましたが、それぞれがXMLHttpRequest
の403になります。
[XMLHttpRequest
は(そしてフラスコアプリと静的なディレクトリが同じサブドメイン、サーバーおよびポートにある)Require all granted
で正常に動作しますので、私はそれがCORSに関連する問題ではないと思う。]
ここに私ですApacheのconfファイル:
<VirtualHost *:80>
ServerName sd.d.com
WSGIDaemonProcess mag user=www-data group=www-data threads=5 python-path=/var/www/sd.d.com:/var/www/sd.d.com/venv/lib/python3.4/site-packages
WSGIProcessGroup mag
WSGIScriptAlias//var/www/sd.d.com/mag.wsgi
<Directory /var/www/sd.d.com>
Require all granted
</Directory>
Alias /models /var/www/sd.d.com/models
<Directory /var/www/sd.d.com/models>
Require local # Tried this
# Require ip 127.0.0.1 # Also tried this
# Require host sd.d.com # Also tried this
</Directory>
ErrorLog /var/www/sd.d.com/error.log
CustomLog /var/www/sd.d.com/access.log combined
LogLevel debug
</VirtualHost>
は、ここに403の後に私のaccess.logからのサンプルです:
02dec1b9.bb.sky.com - - [27/Apr/2016:19:02:49 +0000] "GET /models/cbc96411-aa47-4417-bea4-95943b98b1d3/cbc96411-aa47-4417-bea4-95943b98b1d3.stl HTTP/1.1" 403 581 "http://sd.d.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36"
これが関連している場合はわからないが、私は期待していましたXMLHttpRequest
は02dec1b9.bb.sky.comではなくlocalhostからの要求です。私のアクセスログファイルは以下のように設定されている:私のerror.logから
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
同じ失敗した要求:
[Wed Apr 27 19:02:49.381706 2016] [authz_core:error] [pid 18700:tid 140508152153856] [client 2.222.193.185:59865] AH01630: client denied by server configuration: /var/www/sd.d.com/models/cbc96411-aa47-4417-bea4-95943b98b1d3/cbc96411-aa47-4417-bea4-95943b98b1d3.stl, referer: http://sd.d.com/
どのように私は希望XMLHttpRequest
除くすべての要求を拒否するようにApacheを設定することができますか?
更新
私はRequire all granted
にモデル/ディレクトリを設定した場合は成功XMLHttpRequest
は2.222.193.185ではなく02dec1b9.bb.sky.comとして記録されます。
2.222.193.185 - - [28/Apr/2016:09:41:02 +0000] "GET /models/ca19d6ca-715e-4a0f-89f0-f5e3059f57ff/ca19d6ca-715e-4a0f-89f0-f5e3059f57ff.stl HTTP/1.1" 200 4426280 "http://sd.d.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36"