Я пытаюсь ввести чат в мое приложение Rails. Для этого я использовал gem private_pub и отлично работает в режиме разработки.Сбой подключения к Интернету с nginx и faye
В производстве я использовал Apache + Passenger, но я не смог настроить Faye, поэтому я изменил Apache на Nginx. Мое главное приложение все еще находится на сервере Apache, и это демо на Nginx с портом 8080 (только для теста).
Я могу подключиться к faye.js путем ввода http://chat.mysite.com:8080/faye.js, но соединение с приложением вызывает ошибку (консоль браузера).
WebSocket подключение к 'WS: // локальный: 9292/Фей' не удалось: Ошибка в установлении соединения: сетка :: ERR_CONNECTION_REFUSED
После этой ошибки, другая ошибка появляется каждые 5 секунд.
faye.js: 2 GET http://localhost:9292/faye?message=%5B%7B%22channel%22%3A%22%2Fmeta%2Fhands ... 22% 2C% 22callback-опроса% 22% 5D% 2C% 22id% 22% 3A% 221% 22% 7D% 5D & JSONP = jsonp2 нетто :: ERR_CONNECTION_REFUSED
Мой private_pub.yml
production:
server: "http://localhost:9292/faye"
secret_token: "mysecret"
signature_expiration: 3600 # one hour
Мой private_pub.ru
require "bundler/setup"
require "yaml"
require "faye"
require "private_pub"
Faye::WebSocket.load_adapter('thin')
PrivatePub.load_config(File.expand_path("../config/private_pub.yml", __FILE__), ENV["RAILS_ENV"] || "development")
run PrivatePub.faye_app
Мой Nginx site.conf
server {
listen 8080;
server_name www.chat.mysite.com;
passenger_enabled on;
passenger_app_env production;
root /var/www/mysite/public;
location ^~ /faye {
proxy_pass http://127.0.0.1:9292;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_buffering off;
proxy_redirect off;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
#proxy_set_header X-Forwarded-Proto https;
proxy_cache_bypass $http_pragma $http_authorization;
proxy_no_cache $http_pragma $http_authorization;
break;
}
}
Если изменить private_pub.yml к http://localhost:9292/faye/faye
, я увидел ошибку, как "не может загрузить /faye/faye.js ресурсов".
Как мне изменить свой конфиг Nginx или приложение yml для разрешения ошибки websocket?
в private_pub.yml попробуйте изменить сервер в "HTTP: // локальный: 8080/Фей" – niceman
@niceman получите ошибку приложение-63199a9 ... .js: 14 GET HTTP: // локальный: 8080/Faye .js net :: ERR_CONNECTION_REFUSED – MaruniakS
hmmm, возможно, вы должны поместить имя сервера вместо localhost в private_pub.yml, добавив, что localhost заставит клиента вызвать себя вместо вашего сервера, я думаю – niceman