diff --git a/main.go b/main.go
index a43562c..a5f79f9 100644
--- a/main.go
+++ b/main.go
@@ -12,13 +12,14 @@ import (
 )
 
 type Configuration struct {
-	hostname	string 	// Displayed Hostname
-	host		string 	// Listened Host
-	port		string 	// HTTP Port
-	tls 		bool	// TLS enabled
-	tlscert		string	// TLS Cert Path
-	tlskey		string	// TLS Cert Key Path
-	tlsport		string	// HTTPS Port
+	hostname string // Displayed Hostname
+	host     string // Listened Host
+	port     string // HTTP Port
+	ipheader string // Header to overwrite the remote IP
+	tls      bool   // TLS enabled
+	tlscert  string // TLS Cert Path
+	tlskey   string // TLS Cert Key Path
+	tlsport  string // HTTPS Port
 }
 
 var configuration = Configuration{}
@@ -29,6 +30,9 @@ func init() {
 	host := getEnvWithDefault("HOST", "")
 	port := getEnvWithDefault("PORT", "8080")
 
+	// Most common alternative would be X-Forwarded-For
+	ipheader := getEnvWithDefault("FORWARD_IP_HEADER", "CF-Connecting-IP")
+
 	tlsenabled := getEnvWithDefault("TLS", "0")
 	tlsport := getEnvWithDefault("TLSPORT", "8443")
 	tlscert := getEnvWithDefault("TLSCERT", "/opt/ifconfig/.cf/ifconfig.io.crt")
@@ -36,12 +40,13 @@ func init() {
 
 	configuration = Configuration{
 		hostname: hostname,
-		host: host,
-		port: port,
-		tls: tlsenabled == "1",
-		tlscert: tlscert,
-		tlskey: tlskey,
-		tlsport: tlsport,
+		host:     host,
+		port:     port,
+		ipheader: ipheader,
+		tls:      tlsenabled == "1",
+		tlscert:  tlscert,
+		tlskey:   tlskey,
+		tlsport:  tlsport,
 	}
 }
 
@@ -71,9 +76,9 @@ func mainHandler(c *gin.Context) {
 		c.Abort()
 	}
 
-	cfIP := net.ParseIP(c.Request.Header.Get("CF-Connecting-IP"))
-	if cfIP != nil {
-		ip.IP = cfIP
+	header_ip := net.ParseIP(c.Request.Header.Get(configuration.ipheader))
+	if header_ip != nil {
+		ip.IP = header_ip
 	}
 
 	if fields[0] == "porttest" {
@@ -192,7 +197,6 @@ func main() {
 		}
 	}(errc)
 
-
 	go func(errc chan error) {
 		errc <- r.Run(fmt.Sprintf("%s:%s", configuration.host, configuration.port))
 	}(errc)
@@ -200,8 +204,8 @@ func main() {
 	if configuration.tls {
 		go func(errc chan error) {
 			errc <- r.RunTLS(
-			fmt.Sprintf("%s:%s", configuration.host, configuration.tlsport),
-			configuration.tlscert, configuration.tlskey)
+				fmt.Sprintf("%s:%s", configuration.host, configuration.tlsport),
+				configuration.tlscert, configuration.tlskey)
 		}(errc)
 	}