I'm trying to set up web sockets to go through Nginx to a Phoenix app but keep getting a 403 error. Can anyone advise the correct configuration to make this work in production - development env is fine.
My Nginx conf:
upstream phoenix {
server 127.0.0.1:4000 max_fails=5 fail_timeout=60s;
}
server {
server_name <app-domain>;
listen 80;
location / {
allow all;
# Proxy Headers
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Cluster-Client-Ip $remote_addr;
# The Important Websocket Bits!
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://phoenix;
}
}
My prod.exs conf:
use Mix.Config
config :logger, level: :info
config :phoenix, :serve_endpoints, true
config :app, App.Endpoint,
http: [port: 4000],
url: [host: "127.0.0.1", port: 4000],
root: '.',
cache_static_manifest: "priv/static/manifest.json",
server: true
config :app, App.Repo,
username: System.get_env("MONGO_USERNAME"),
password: System.get_env("MONGO_PASSWORD"),
database: "template",
hostname: "localhost",
pool_size: 10
I can provide any additional info as requested if necessary.
The app can be reached fine over the domain name, the last and only remaining problem is getting web sockets to work.
Many thanks to anyone who can point me in the right direction.
i followed the guide from phoenix site. Exrm Releases - Phoenix
Your nginx.config is missing this:
I also had some error when generate a release in my local machine after ship the release to my server.
So i suggest you should generate your release inside your server environment.
Edited:
Error in browser console:
ws://phoenix.hollyer.me.uk/socket/websocket?token=&vsn=1.0.0' failed: Error during WebSocket handshake: Unexpected response code: 403
This is probably this error.You should try to start your console inside your server:
so you may re-configure your host like:
either pass :check_origin option to your endpoint config or UserSocket module:
And then try to deploy again.Hope that help you!