サブドメインを持っていますアプリ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);