Docker Containerサービスを使用して、Elastic BeanstalkインスタンスにREST APIをデプロイしました。Elastic Beanstalk/Docker内のクライアントIPにアクセスするNginx/PHP-FPMインスタンス
APIに接続しているクライアントのIPを取得していて、これまでに試したことがあるすべての試みは、同じDocker Container IPが返されるか、HTTP 499エラーメッセージが発生します。上記の構成を実行
nginxの設定
server {
listen 80;
server_name api.zecofrontend.local
index index.php index.html;
root /var/www/public;
location/{
try_files $uri /index.php?$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
# fastcgi_param REMOTE_ADDR $http_x_real_ip;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
ドッカー作曲
version: '2'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./src:/var/www
- ./vhost.local.conf:/etc/nginx/conf.d/site.conf
links:
- app
depends_on:
- app
app:
image: php7.1-fpm-base
volumes:
- ./src:/var/www
、私に172.18.0.1 IPアドレス、ドッキングウィンドウコンテナ/ホスト、それを自己のものを返します。
ローカルとElastic Beanstalkのデプロイされたインスタンスの設定が異なりますが、唯一の違いはSSL証明書に関するものです。
提案がありますか?
あなたのnginx httpセクションの 'real_ip_header X-Forwarded-For;'と 'set_real_ip_from 0.0.0.0/0;'に2つのディレクティブがないので、基本的にnginxにその実際のIPを取得する方法を教えてください。私は '0.0.0.0/0'を使いましたが、リクエストを送信しているLBのIPを一度使うことができます –