Nginx: proxy_pass でエンドポイントへのパブリック アクセスを拒否するにはどうすればよいですか?

Nginx: proxy_pass でエンドポイントへのパブリック アクセスを拒否するにはどうすればよいですか?

サブドメインを持っていますアプリproxy_pass を使用してポート 4000 のソケットを使用して phoenix/elixir バックエンド プロジェクトに接続するように設定します。

私のプロジェクトには、 というエンドポイントがあり/admin/auth、PHPスクリプト(例.com、 ないアプリ) は HTTPS cURL 投稿を送信します。ただし、/authエンドポイントは非常に機密性が高いため、ローカル ホスト 127.0.0.1 のみがそのエンドポイントに投稿を送信できるようにし、他のホストは送信しないようにします。

次の Nginx 設定がありますが、動作していないようです:

upstream app {
  server 127.0.0.1:4000 max_fails=5 fail_timeout=60s;
}
server {
  server_name app.example.com;

  listen [::]:443 ssl;
  listen 443 ssl;

  location = /admin/auth {
    allow 127.0.0.1;
    deny all;
  }

  location / {
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Cluster-Client-Ip $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_pass http://app;
  }
}

/admin/これをどうすればよいのでしょうか? また、より機密性の高いエンドポイントが多数含まれるフォルダー全体へのパブリック アクセスも拒否するにはどうすればよいでしょうか?

location = /admin/authローカルホスト 127.0.0.1 で実行される example.com の cURL スクリプトは次のようになります。現在、スクリプトは上記の Nginx 構成では動作しませんが、 Nginx 構成のブロックを削除すると動作します。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://app.example.com/admin/auth");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);

関連情報