[英]ActionCable + Nginx + Puma and java.io.EOFException
我正在嘗試連接到ActionCable網絡套接字,並且僅使用Puma而不使用nginx即可在本地正常運行。
但是,當我嘗試在暫存環境中執行完全相同的操作時,連接將在連接后立即關閉。 我能夠得到下游歡迎的消息,也許平。
但是,該連接突然關閉而沒有任何onClose回調,因此我的猜測是nginx不會讓該連接持久。
這是我的站點nginx配置。
upstream app {
# Path to Puma SOCK file, as defined previously
server unix:/home/deploy/my-app/shared/tmp/sockets/puma.sock fail_timeout=60;
keepalive 60;
}
server {
listen 80;
server_name localhost;
# websocket_pass websocket;
root /home/deploy/my-app/current/public;
try_files $uri/index.html $uri @app;
location @app {
proxy_pass http://app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
#location / {
# proxy_set_header X-Forwarded-Proto $scheme;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header Host $host;
# proxy_redirect off;
# proxy_http_version 1.1;
# proxy_set_header Connection '';
# proxy_pass http://app;
#}
location ~ ^/(assets|fonts|system)/|favicon.ico|robots.txt {
gzip_static on;
expires max;
add_header Cache-Control public;
}
location /cable {
proxy_pass http://app;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
我還在nginx錯誤日志中發現了此錯誤:
2019/02/11 21:08:35 [錯誤] 10233#10233:* 2 recv()失敗(104:對等方重置連接),同時代理升級的連接,客戶端:xxxx,服務器:localhost,請求:“ GET / cable / HTTP / 1.1”,上游:“ http:// unix:/home/deploy/wr-api/shared/tmp/sockets/puma.sock:/ cable / ”,主機:“ xxxx”
因此,一段時間后,我們注意到登台環境cable.yml的url具有以下值:
url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
除去該值和除adapter: staging
以外的所有其他值adapter: staging
為我們修復了該值。
新的cable.yml登台配置:
staging:
adapter: redis
工作!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.