Hero Image

Configure Nginx as a Reverse Proxy on RHEL 9

Configure Nginx as a Reverse Proxy on RHEL 9

A reverse proxy forwards client requests to one or more upstream servers (e.g. Node.js, Gunicorn, Tomcat).

Prerequisites

Nginx installed on RHEL 9.

Step 1 – Basic reverse proxy block

Create /etc/nginx/conf.d/proxy.conf (adjust path for RHEL 9):

upstream backend {
    server 127.0.0.1:3000;
    # Add more servers for load balancing:
    # server 127.0.0.1:3001;
}

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass         http://backend;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade          $http_upgrade;
        proxy_set_header   Connection       "upgrade";
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_read_timeout 86400;
    }
}

Step 2 – Buffer and timeout tuning

proxy_buffering          on;
proxy_buffer_size        16k;
proxy_buffers            4 16k;
proxy_busy_buffers_size  32k;
proxy_connect_timeout    60s;
proxy_send_timeout       60s;
proxy_read_timeout       60s;

Step 3 – Reload Nginx

nginx -t && systemctl reload nginx

Step 4 – WebSocket support

The Upgrade and Connection headers in Step 1 already enable WebSocket proxying. Ensure your upstream application handles upgrade requests.