#やりたいこと
http://192.168.0.10/gunicorn
にファイルをPOSTすると,サーバ2に保存されるようにしたい.
#構成
- サーバ1
Nginxが動作中
IPアドレス:192.168.0.10
開放済みポート: 80, 443
nginxの設定(抜粋)
location /gunicorn/ { proxy_pass http://192.168.0.11:9000; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_redirect off; proxy_buffering on; proxy_cache gitlab; proxy_cache_valid 200 1d; proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; }
- サーバ2
Gunicornが9000番ポートで動作中
IPアドレス:192.168.0.11
開放済みポート: 9000
サーバ側ソースserver.py
import falcon from falcon_multipart.middleware import MultipartMiddleware import json from datetime import datetime class CORSMiddleware: def process_request(self, req, resp): resp.set_header('Access-Control-Allow-Origin', '*') class Upload: def on_post(self, req, res): image = req.get_param('file') raw = image.file.read() filepath = './' + datetime.now().strftime('%Y%m%d%H%M%S') + '.jpg' with open(filepath, 'wb') as f: f.write(raw) resp = { 'result': filepath + ' uploaded', } res.body = json.dumps(resp) api = falcon.API(middleware=[CORSMiddleware(), MultipartMiddleware()]) api.add_route('/gunicorn', Upload())
$ gunicorn server:api -b 0.0.0.0:9000
問題点
Content-Type: multipart/form-data
でファイルをアップロードすると,405 Method Not Allowed
エラーが表示され,アップロードができません.キャッシュの問題を考えましたが,解決しませんでした.
要求ヘッダー
Accept: text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: ja,en-US;q=0.7,en;q=0.3 Connection: keep-alive Content-Length: 288298 Content-Type: multipart/form-data; boundary=…-1967630983873251128828464698 Cookie: _xsrf=2|74f490ef|cdf9585ea48f4404597ee2bbbd0f3805|1528683448 DNT: 1 Host: 192.168.10.1 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Macintosh; Intel …) Gecko/20100101 Firefox/60.0
応答ヘッダー
content-length: 178 content-type: text/html date: Mon, 11 Jun 2018 05:04:06 GMT location: http://192.168.10.1/gunicorn server: nginx strict-transport-security: max-age=31536000 X-Firefox-Spdy: h2
リバースプロキシを介さずに,サーバ2のみで動作させると正常に動作します.リバースプロキシを通す際に,POSTがGETに変わっているか,POSTしたファイルが欠損しているのでしょうか.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。