Action Cable 프로덕션 사용 시 Nginx 및 Cable.yml 설정
4260 단어 ActionCablenginxRailsRedis루비
소개
Action Cable은 WebSocket 통신 기술을 이용하여 실시간 채팅 등의 기능을 구현할 수 있는 기능입니다.
AWS 프로덕션 환경에서 Nginx 및 Cable.yml 설정과 관련하여 막힌 부분을 공유합니다.
전제
로컬에서는 Websocket 통신이 정상적으로 움직이고 있다고 가정합니다.
Nginx 설정 추가
마지막 한 줄이지만 Https의 경우 이것이 없으면 콘솔에 403 오류가 발생합니다.
proxy_set_header X-Forwarded-Proto https;
/etc/nginx/conf.d/app_name.conf
location /cable {
proxy_pass http://puma;
proxy_http_version 1.1;
proxy_set_header Upgrade websocket;
proxy_set_header Connection Upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
Cable.yml 설정
문서에 설명된 대로 Production 환경에서 어댑터에 "async"를 사용하는 것은 더 이상 사용되지 않습니다.
동시에 다수의 액세스가 있으면 쓸모 없게 되는 것 같습니다.
8.1.1.1 Async Adapter
The async adapter is intended for development/testing and should not be used in production.
Heroku에도 정중한 해설이 있습니다.
프로덕션 환경에는 Redis 또는 PostgreSQL(DB로 사용하고 있다면)이 필요합니다.
Real-Time Rails: Implementing WebSockets in Rails 5 with Action Cable
Lastly, Action Cable uses Redis as a data store for transient data, syncing content across instances of your application.
나는 AWS에서 Redis를 한 번 계약했고 엔드 포인트 URL을 아래의 production 어댑터로 설정했지만 PostgreSQL을 사용했기 때문에 이것으로 갈 수있었습니다.
Redis 돈이 들기 때문에 postgres에서 좋았습니다,,,
/config/cable.yml
development:
adapter: async
test:
adapter: async
production:
adapter: postgresql
Production.rb
내 도메인의 요청을 허용합니다.
/config/environments/production.rb
config.action_cable.url = 'wss://app_name.com/cable'
config.action_cable.allowed_request_origins = [ 'https://app_name.com', /https:\/\/app_name.*/ ]
ActionCable.server.config.disable_request_forgery_protection = true
끝에
특히 Nginx 설정과 Redis 등 어댑터 설정에 매우 힘들었습니다.
ActionCable은 Rails5에서 추가된 비교적 새로운 기능이기 때문에, 일본어 기사에서는 Https나 Redis에 대한 언급이 적고, 영어 기사를 참고로 했습니다.
도움이되면 다행입니다.
Reference
이 문제에 관하여(Action Cable 프로덕션 사용 시 Nginx 및 Cable.yml 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kumasan3/items/05464b8ec89fc4bc8360텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)