2017-09-22 19 views
0

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証明書に関するものです。

提案がありますか?

+0

あなたの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を一度使うことができます –

答えて

関連する問題