PHPアプリケーションで訪問者の実際のIPを取得する際に問題が発生しています。私はKubernetesをGoogle Container Engine(マスター:1.4.8、ノード:1.4.7)で実行しています。Kubernetesの背後にあるPHPアプリケーションの実際のIPをGCEで取得する
サービスの定義:
apiVersion: v1
kind: Service
metadata:
name: app-service
spec:
type: LoadBalancer # spawning google loadbalancer
selector:
name: app # running simple php/nginx container
ports:
- port: 80
targetPort: 80
どのようにそれは私のPHPアプリに渡されませんX-Forwarded-For
ヘッダなどということができますか?私はちょうど10.0.1.1
であるソースIP(php REMOTE_ADDR
)を取得しています。 Google Cloudでは、サービスがのレイヤ4ロードバランサを使用していることがわかります。これは、実際の送信元IPが失われ、X-Forwarded-For
ヘッダーが決して設定されないという問題である可能性がありますか?
誰かが私に何が起こっているのか説明することができれば、それは非常に役立つでしょう!私はCloudFlareの背後に私の全体のアプリケーションを入れているので、それは今CloudFlareのHTTPプロキシから指している
location ~ \.php$ {
fastcgi_pass php-upstream;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
EDIT :何その価値は、私は私のアプリのコンテナに次のnginxの設定を使用していますについては
- > GCEロード・バランサ。そして、どういうわけかX-Forwarded-For
ヘッダーとすべてが存在します!私にとってはGCE Load Balancerの問題だと思われますが、どうやらそれらのヘッダーを設定できません。
おかげに似ているようです。実際のソースIPには本当に関心がありませんが。正しい 'X-Forwarded-For'ヘッダー(ソース/ユーザーのIPを使用)を設定するには、ロード・バランサ/リバース・プロキシーが必要です。トピックで私の編集を参照してください、私は奇妙な何かを発見した。 –