nginx リダイレクトまたは単一の場所を返す

nginx リダイレクトまたは単一の場所を返す

videos.mydomain.com/kickboxingYouTubeリンクにリダイレクトしvideos.mydomain.com/classesたり、違うYouTube リンク。(これらは両方とも非公開のプレイリストであり、当社の Web サイトにアクセスできるすべてのユーザーに対してこのリダイレクトが自動的に実行されるようにしたいと考えています。これは、これを構成するいくつかの手順のうちのステップ 1 ですが、うまく機能しないようです)。

私の設定は次のとおりです:

server {
  server_name videos.mydomain.com;
  root /var/www/www.mydomain.com;

  listen 80;
  access_log /var/log/nginx/videos.mydomain.com-access.log;
  error_log /var/log/nginx/videos.mydomain.com-error.log debug;

  location /classes {
    return 301 https://youtube.com/playlist?list=classes-playlist;
  }

  location /kickboxing {
    return 301 https://youtube.com/playlist?list=kickboxing-playlist;
  }

  return 404;
}

私はこれをsites-availableに設定し、有効にしました(もちろんDNSも設定しました)。残念ながら、URLに移動するとhttp://videos.mydomain.com/キックボクシングまたはhttp://videos.mydomain.com/classes、404 URLしか表示されません。return 404行をいずれかの行に変更するとreturn 301、適切にリダイレクトされますが、のみその特定の URL については、セクションを正しく識別していないようですlocation

答え1

これはブロックを入れたために起こりreturn 404;ますserver

書き直しレベルでserver処理される前にレベルで書き直しますlocation

この問題を解決するには、 に配置しますlocation。(一般的なルールとして、リクエストは常に で処理する必要がありますlocation。)

    location / {
        return 404;
    }

関連情報