Я пытаюсь развернуть сервер веб-сервера на Elastic Beanstalk. У меня есть контейнер Docker, который содержит как nginx, так и jar-сервер, с nginx, просто выполняющим пересылку. Nginx.conf как это:Websockets на ElasticBeanstalk, дающий 404
listen 80;
location /ws/ { # <-- this part only works locally
proxy_pass http://127.0.0.1:8090/; # jar handles websockets on port 8090
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location/{ # <-- this part works locally and on ElasticBeanstalk
proxy_pass http://127.0.0.1:8080/; # jar handles http requests on port 8080
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
я могу запустить этот докер локально и все работает отлично - HTTP запросы обслуживаются, и я могу подключить WebSockets с помощью ws://localhost:80/ws/
Однако, когда я раскрываю к Elastic Beanstalk, запросы НТТР все еще в порядке, но попытка подключения websockets на ws://myjunk.elasticbeanstalk.com:80/ws/
дает ошибку 404. Нужно ли мне что-то еще, чтобы разрешить веб-узлы на эластичном бобовом стебле?
Это работает, но я бы рекомендовал использовать ebextensions и установить параметр, чтобы установить протокол в tcp. Таким образом, если вы восстановите среду или клонируете свою среду, настройки на вашем балансировщике нагрузки будут сохраняться. Вы можете сделать это, создав в своем приложении файл '.ebextensions/load_balancer.config' с параметром« namespace: aws: elb: loadbalancer »и« option_name: LoadBalancerProtocol »и« value: TCP ». Если вы разместите этот источник приложения в своей среде, настройки будут сохраняться при перестройках, клонах и сохраненных конфигурациях. –
Список поддерживаемых параметров параметров доступен здесь: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options.html Ниже приведен пример установки параметров параметров в файле конфигурации ebextensions http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-options Файл находится в формате yaml –
Я, конечно, согласен, что лучше работать с ним из кли. Я не знаю о вашем подходе «.ebextensions», так как мне всегда удавалось избежать этого. Вместо этого я перехожу в 'LoadBalancerPortProtocol', который вы предлагаете (хотя, может быть, у вас есть опечатка?), Используя' aws elasticbeanstalk create-environment' и передавая его с помощью '--option-settings'. – thund