diff --git a/http_test.go b/http_test.go
index c1242e5f32d006fbdec28ea8b31c6e89ac8dfb74..6fb56af150cc9a4117616976015798b5fb7f6054 100644
--- a/http_test.go
+++ b/http_test.go
@@ -176,7 +176,7 @@ func TestHTTPPeerInfo(t *testing.T) {
 		t.Fatal(err)
 	}
 	c.SetHeader("user-agent", "ua-testing")
-	c.SetHeader("origin", "origin.example.com")
+	c.SetHeader("x-forwarded-for", "origin.example.com")
 
 	// Request peer information.
 	var info PeerInfo
diff --git a/websocket.go b/websocket.go
index 76e6aee33d12c57a68d4849c5d0795a935a5c227..42ec51272deafb235fc82c660bd674abc55eea56 100644
--- a/websocket.go
+++ b/websocket.go
@@ -120,7 +120,6 @@ func wsClientHeaders(endpoint, origin string) (string, http.Header, error) {
 	header := make(http.Header)
 	if origin != "" {
 		header.Add("origin", origin)
-		header.Add("X-Forwarded-For", origin)
 	}
 	if endpointURL.User != nil {
 		b64auth := base64.StdEncoding.EncodeToString([]byte(endpointURL.User.String()))
@@ -177,10 +176,16 @@ func newWebsocketCodec(ctx context.Context, c *websocket.Conn, host string, req
 	}
 	// Fill in connection details.
 	wc.info.HTTP.Host = host
+	// traefik proxy protocol headers
 	wc.info.HTTP.Origin = req.Get("X-Real-Ip")
 	if wc.info.HTTP.Origin == "" {
 		wc.info.HTTP.Origin = req.Get("X-Forwarded-For")
 	}
+	// origin header fallback
+	if wc.info.HTTP.Origin == "" {
+		wc.info.HTTP.Origin = req.Get("origin")
+	}
+	wc.info.RemoteAddr = wc.info.HTTP.Origin
 	wc.info.HTTP.UserAgent = req.Get("User-Agent")
 	wc.info.HTTP.Headers = req
 	// Start pinger.