pooza / mulukhiya-toot-proxy

Fediインスタンスへの投稿に対して、ハッシュタグの追加等を行うプロキシ。通称「モロヘイヤ」。
MIT License
33 stars 1 forks source link

メディアをアップロードできない #2601

Closed karasugawasu closed 2 years ago

karasugawasu commented 2 years ago

概要

バグと言うよりは質問です・・ メディアをアップロードすると403が返ってきます

現象

メディアをアップロードすると403が返る 見てみると、以下のようなエラーが出ている

Blocked host: localhost
To allow requests to localhost, add the following to your environment configuration:
config.hosts << "localhost"

なお、コンフィグに追加してもだめでした。\ (以前から出ていて、Mastodon3.4.3にするまではMastodon側でconfig.hosts << "localhost"を追加して何とかなってましたが、アプデしてからどうにも動かなくなりました。。 今まではMastodonが悪いと思っていましたが、モロヘイヤを無効にするとアップロードできることから何かしら絡んでいるのかなと)

モロヘイヤのログ

11月 20 23:08:09 mstdn04sv mulukhiya-toot-proxy[1838]: {"method":"POST","multipart":true,"url":"https://md.korako.me/api/v2/media","status":202,"seconds":0.568}

nginxのログ

xxx.xx.xxx.xx - - [20/Nov/2021:23:11:01 +0900] "POST /api/v2/media HTTP/2.0" 202 316 "-" "mulukhiya-toot-proxy/4.11.5 (https://github.com/pooza/mulukhiya-toot-proxy)" "xxx.xx.xxx.xx"
xxx.xx.xxx.xx - - [20/Nov/2021:23:11:01 +0900] "POST /api/v2/media HTTP/2.0" 202 486 "https://md.korako.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36" "xxx.xx.xxx.xx"
xxx.xx.xxx.xx - - [20/Nov/2021:23:11:01 +0900] "GET /api/v1/media/107309790723717688 HTTP/2.0" 403 1511 "https://md.korako.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36" "xxx.xx.xxx.xx"

おま環と思っていますが、何か解決策ご存じでしょうか。 お手数ですがご確認をお願いします。

期待される動作

メディアをアップロードすることができる

再現手順

1.メディアをアップロードする

環境

mulukhiya-toot-proxy 4.11.5 CentOS 7 Mastodon 3.4.3

pooza commented 2 years ago

config.hosts << "localhost" だとループバック 127.0.0.1 からのアップロードしか許可していなさそうな印象です。 config.hosts << "md.korako.me" とかはどうでしょうか。

karasugawasu commented 2 years ago

色々今試したんですが、nginxの設定を変更したら行けました。。

  location ~ ^/api/v[0-9]+/media/[0-9]+$ {
    proxy_set_header Host $host;      #これを追加
    proxy_pass_header Server;
    set $test "${request_method}${http_x_mulukhiya}";
    if ($test ~* '^PUT.+') {
      proxy_pass http://backend;
    }
    if ($test = 'PUT') {
      proxy_pass http://localhost:3008;
    }
    if ($test ~* '^(GET|POST)') {
      proxy_pass http://backend;
    }
  }
pooza commented 2 years ago

またこれかw 済みませんでした。 一通り入れておきましょう。