# 1. CLOUDFLARE REAL IP CONFIGURATION
<IfModule mod_remoteip.c>
    RemoteIPHeader CF-Connecting-IP
    
    # Split into several lines to make it much easier to manage.
    RemoteIPTrustedProxy 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22
    RemoteIPTrustedProxy 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20
    RemoteIPTrustedProxy 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13
    RemoteIPTrustedProxy 104.24.0.0/14 172.64.0.0/13 131.0.72.0/22
    RemoteIPTrustedProxy 2400:cb00::/32 2606:4700::/32 2803:f800::/32 2405:b500::/32
    RemoteIPTrustedProxy 2405:8100::/32 2a06:98c0::/29 2c0f:f248::/32
</IfModule>

# 2. REVERSE PROXY CONFIGURATION (RoadRunner & Swoole)
<IfModule mod_proxy.c>
    # `ProxyRequests Off` is mandatory to prevent the server from becoming an open proxy.
    ProxyRequests Off
    ProxyPreserveHost On
</IfModule>

# 3. STREAMING OPTIMIZATIONS
<IfModule mod_env.c>
    # Disabling buffering and keep-alive for streaming
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-sendchunked 1
    SetEnv no-gzip 1
</IfModule>

# 4. CUSTOM REQUEST HEADERS
<IfModule mod_headers.c>
    # Adding the real IP to the backend
    RequestHeader set X-Real-IP %{REMOTE_ADDR}s
</IfModule>

# 5. DEBUGGING
LogLevel warn
