Skip to content

With Reverse Proxy

You may want to use faucet with a reverse proxy like Nginx or Apache. This might be useful if you want to add routing, SSL, or other useful features of a reverse proxy. This page will show you some of the necessary configuration to get faucet working with a reverse proxy.

Nginx

For your nginx configuration, you might want to add the following to your location block:

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header  X-Real-IP $remote_addr;
proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;

In this case we are adding the Upgrade and Connection headers so that the websocket connection will work. We are also adding the X-Real-IP and X-Forwarded-For headers so that the IP address of the client will be forwarded to faucet.

faucet will need to be configured to trust the proxy and use either the X-Real-IP or X-Forwarded-For header to get the IP address of the client. This can be done by adding the --ip-from / -i command line options or by setting the FAUCET_IP_FROM environment variable.

To use the X-Real-IP header, set the FAUCET_IP_FROM environment variable to x-real-ip. To use the X-Forwarded-For header, set the FAUCET_IP_FROM environment variable to x-forwarded-for.

Apache

For your apache configuration, you might want to add the following to your VirtualHost block:

RewriteEngine on
RewriteCond %{HTTP:Upgrade} =websocket
RewriteRule /(.*) ws://localhost:3838/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket
RewriteRule /(.*) http://localhost:3838/$1 [P,L]

Apache automatically adds the X-Fowarded-For header, so you don't need to do anything else to get the client IP address to faucet. You will need to set the FAUCET_IP_FROM environment variable to x-forwarded-for so that faucet will use the X-Forwarded-For header to get the IP address of the client. You can also use the --ip-from / -i command line option to set the FAUCET_IP_FROM environment variable.