Nginx – Reverse proxying a Websocket upstream with Cloudflare

cloudflarenginx

I was going to ask on the main SO boards, but figured this place would be more appropriate.

I am wanting to use cloudflare on my main website and then use nginx to reverse proxy a directory to my websocket gameserver.

NGINX server block:

    location /Fonzy/ {
                    proxy_pass http://websocket;
                    proxy_http_version 1.1;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection $connection_upgrade;
        }

Upstream block:

upstream websocket {
        least_conn;
        server GAMESERVERIPHERE:9300;
    }

My question is, since the cloudflare site will be a different server than my gameserver, will the upstream still work? Or does the upstream block server have to be a local address?

The reason why I am curious is because I am wanting the "protection" from cloudflare, but still want to have my gameserver hidden (or should I say reverse proxied).

Best Answer

Yes, Nginx to proxy to multiple backends based on the location.

In your case there is little value in using the upstream module which useful when you have mutiple backends for the same app. In your case, a basic proxy_pass call should do:

proxy_pass http://GAMESERVERIPHERE:9300
Related Topic