Hello!
On Thu, Jun 10, 2021 at 06:14:03AM -0400, raphy wrote:
> In order to use XMPP with websocket, and take advantage of nginx
> capabilities to proxy to 443 and to serve multiple domains, I've configured
> nginx as follows:
>
>
> server {
> listen 443 ssl http2 default_server;
> server_name grasp.deals www.grasp.deals;
[...]
> location /http-bind {
> proxy_pass http://127.0.0.1:5280/http-bind;
> proxy_set_header Host $host;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> proxy_set_header X-Forwarded-Proto $scheme;
> proxy_buffering off;
> tcp_nodelay on;
> }
>
> location /xmpp-websocket {
> proxy_pass http://127.0.0.1:5280/xmpp-websocket;
> proxy_http_version 1.1;
> proxy_set_header Connection "Upgrade";
> proxy_set_header Upgrade $http_upgrade;
>
> proxy_set_header Host $host;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> proxy_set_header X-Forwarded-Proto $scheme;
>
> proxy_read_timeout 900s;
> }
> }
[...]
> In the app I'm developing, when I switch from BOSH (http-bind), which works
> fine:
>
> let [conn, setConn] = React.useState(new
> Strophe.Connection("https://grasp.deals/http-bind"));
>
> to websocket:
>
> let [conn, setConn] = React.useState(new
> Strophe.Connection("wss://grasp.deals/xmpp-websocket"));
>
> I get this error:
>
> WebSocket connection to 'wss://grasp.deals/xmpp-websocket' failed: Error
> during WebSocket handshake:
> Unexpected response code: 403
Both locations seems to be proxied to the same backend,
127.0.0.1:5280, with mostly identical configurations. What's the
backend is expected to do? Do you see the request in nginx log?
In backend logs?
From the information you've provided it looks like the error is
returned by the backend (though this needs to be checked), so you
have to look at the backend to find out what goes wrong.
If you don't see the request in the backend logs, try adding
something like $upstream_status to nginx access logs
(http://nginx.org/r/log_format) to see if the error is indeed
returned by the backend. Alternatively, configure debug logging
(http://nginx.org/en/docs/debugging_log.html) to see all the
request processing details, it will also show the response
returned by the backend server. Or simply use tcpdump to see the
traffic between nginx and the backend.
--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx