[REDIS] AWS에 ActionCable : 예기치 않은 응답 코드 : 404 웹 소켓 핸드 셰이크 중에 오류
REDISAWS에 ActionCable : 예기치 않은 응답 코드 : 404 웹 소켓 핸드 셰이크 중에 오류
우리는 DHH의 간단한 단일 5 채팅 예 레일 배포하려고, 자기는 AWS의 EC2 인스턴스를 포함. 코드는 여기에 있습니다 : https://github.com/HectorPerez/chat-in-rails5
따라서 우리는 단일 인스턴스를 회전하는 탄성 콩 줄기를 사용 :
eb create dev-env -p “64bit Amazon Linux 2015.09 v2.0.4 running Ruby
2.2 (Puma)” –single -i t2.micro --envvars
SECRET_KEY_BASE=g5dh9cg614a37d4bdece9126b42d50d0ab8b2fc785daa1e0dac0383d6387f36b
이것은 최소 설치, 그래서 더 Elasticache,없이 부하 분산이 없습니다. EC2 인스턴스에 레디 스를 설치하려면 우리는이 같은 파일을 config (설정) .ebextensions 추가 : https://gist.github.com/KeithP/08b38189372b7fd241e5#file-ebextensions-redis-config을; 커밋 및 배포 GIT.
그러나 웹 소켓 나던 작업 : 브라우저 콘솔을 검사, 우리는이 오류가 이상 반복 이상 참조 :
application-a57354de3399cd895ca366df9bd7316ab69e81d266b63be7d7be563ebc78ab9d.js:27
WebSocket connection to ‘ws://dev-env-y2e5dcrxqk.elasticbeanstalk.com/cable’ failed:
Error during WebSocket handshake: Unexpected response code: 404
서버 production.log 쇼 2는 모든 "완료 / 케이블"통화 "GET / 케이블 시작". ActiveCable에서 디버그 메시지가 없습니다 :
/var/app/containerfiles/logs/production.log
-------------------------------------
INFO -- : Processing by RoomsController#show as HTML
DEBUG -- : [1m[36mMessage Load (0.1ms)[0m [1m[34mSELECT "messages".* FROM "messages"[0m INFO -- : Rendered collection (0.0ms)
INFO -- : Rendered rooms/show.html.erb within layouts/application (0.5ms)
INFO -- : Completed 200 OK in 2ms (Views: 1.2ms | ActiveRecord: 0.1ms)
INFO -- : Started GET "/cable" for <ip_address> at 2016-01-01 17:28:26 +0000
INFO -- : Started GET "/cable/" for <ip_address> at 2016-01-01 17:28:26 +0000
INFO -- : Finished "/cable/" for <ip_address> at 2016-01-01 17:28:26 +0000
해결법
-
==============================
1.AWS에서 단일 인스턴스 탄성 콩 줄기 배포에 웹 소켓 채팅 예제를 실행하려면 다음 Nginx에 프록시 설정을 추가해야합니다 (참고 : 교체 "env1.t3tiiauce6.us-west-2.elasticbeanstalk.com"당신의 사이트 이름을 가진) :
AWS에서 단일 인스턴스 탄성 콩 줄기 배포에 웹 소켓 채팅 예제를 실행하려면 다음 Nginx에 프록시 설정을 추가해야합니다 (참고 : 교체 "env1.t3tiiauce6.us-west-2.elasticbeanstalk.com"당신의 사이트 이름을 가진) :
.ebextensions / nginx_proxy.config
files: "/etc/nginx/conf.d/websockets.conf" : content: | upstream backend { server unix:///var/run/puma/my_app.sock; } server { listen 80; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; server_name env1.t3tiiauce6.us-west-2.elasticbeanstalk.com # prevents 502 bad gateway error large_client_header_buffers 8 32k; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; # prevents 502 bad gateway error proxy_buffers 8 32k; proxy_buffer_size 64k; proxy_pass http://backend; proxy_redirect off; location /assets { root /var/app/current/public; } # enables WS support location /cable { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } } container_commands: 01restart_nginx: command: "nginx -t && service nginx reload"
`
from https://stackoverflow.com/questions/34536926/actioncable-on-aws-error-during-websocket-handshake-unexpected-response-code by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 어떻게 내가 protobuf - 그물 Booksleeve을 이용해야 하는가? (0) | 2020.01.01 |
---|---|
[REDIS] 레디 스 매장의 UID를 설정하고 최선의 방법을 분류 (0) | 2020.01.01 |
[REDIS] 값을 기준으로 키 찾기 (0) | 2020.01.01 |
[REDIS] 레디 스에서 개체 속성을 저장 (0) | 2019.12.31 |
[REDIS] 간단한 .NET 분산 캐싱 솔루션을위한 제안 (0) | 2019.12.31 |