在Elastic Beanstalk / Docker Nginx / PHP-FPM实例中访问客户端IP
为了让部署和开发人员更容易,我已经使用他们的Docker容器服务在Elastic Beanstalk实例上部署了我们的REST API。
除了获取那些连接到API的客户端IP以及我迄今为止尝试过的所有尝试之外,所有的工作都很好,导致返回相同的Docker Container IP或HTTP 499错误消息。
Nginxconfiguration
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; } }
Docker撰写
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
运行上面的configuration,返回一个172.18.0.1 IP地址,它是自己的docker container / host的IP地址。
对于本地和Elastic Beanstalk部署的实例,我有不同的configuration,但唯一的区别与SSL证书有关。
有什么build议么?
AWS ELB会自动为每个请求添加一些标题。 查看http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/x-forwarded-headers.html#x-forwarded-for上的文档
在你的情况下,你需要的是使用X-Forwarded-For,其中包含通过ELB访问网站的客户端的IP。
- Go和Docker:当我使用stdlib时,我能够运行一个去web服务器,当我使用自定义包发生错误
- dockerbuild设失败 – “无法分配内存”
- debuggingElastic Beanstalk Docker运行失败?
- 如何在单个容器Docker环境上的Amazon Elastic Beanstalk上部署Rails应用程序
- Elastic Beanstalk本地环境(与Docker)连接被拒绝
- 无法通过我的gmail电子邮件ID从弹性beanstalk环境发送电子邮件
- AWS Elastic Beanstalk中的Docker:在$ PATH中找不到可执行文件“
- 在Elastic Beanstalk的Docker中的cron作业中访问S3
- 使用Elastic Beanstalk在AWS上转到Web应用程序,不会在日志中显示输出