diff --git a/proxy_protocol_unix.t b/proxy_protocol_unix.t
new file mode 100644
index 0000000..a0124d2
--- /dev/null
+++ b/proxy_protocol_unix.t
@@ -0,0 +1,120 @@
+#!/usr/bin/perl
+
+# (C) Sergey Kandaurov
+# (C) Nginx, Inc.
+
+# Tests for haproxy protocol with unix socket.
+
+###############################################################################
+
+use warnings;
+use strict;
+
+use Test::More;
+
+BEGIN { use FindBin; chdir($FindBin::Bin); }
+
+use lib 'lib';
+use Test::Nginx;
+use Test::Nginx::Stream;
+
+###############################################################################
+
+select STDERR; $| = 1;
+select STDOUT; $| = 1;
+
+my $t = Test::Nginx->new()
+	->has(qw/http realip stream stream_realip stream_return unix/)
+	->plan(5);
+
+$t->write_file_expand('nginx.conf', <<'EOF');
+
+%%TEST_GLOBALS%%
+
+daemon off;
+
+events {
+}
+
+http {
+    %%TEST_GLOBALS_HTTP%%
+
+    server {
+        listen       unix:%%TESTDIR%%/unix.sock proxy_protocol;
+        server_name  localhost;
+
+        add_header X-IP $remote_addr;
+        add_header X-PP $proxy_protocol_addr;
+        real_ip_header proxy_protocol;
+
+        location / { }
+        location /pp {
+            set_real_ip_from unix:;
+            error_page 404 =200 /t;
+        }
+    }
+}
+
+stream {
+    %%TEST_GLOBALS_STREAM%%
+
+    server {
+        listen      unix:%%TESTDIR%%/unix1.sock proxy_protocol;
+        return      $remote_addr:$proxy_protocol_addr;
+    }
+
+    server {
+        listen      unix:%%TESTDIR%%/unix2.sock proxy_protocol;
+        return      $remote_addr:$proxy_protocol_addr;
+
+        set_real_ip_from unix:;
+    }
+
+    server {
+        listen      127.0.0.1:8080;
+        proxy_pass  unix:%%TESTDIR%%/unix.sock;
+
+        proxy_protocol on;
+    }
+
+    server {
+        listen      127.0.0.1:8081;
+        proxy_pass  unix:%%TESTDIR%%/unix1.sock;
+
+        proxy_protocol on;
+    }
+
+    server {
+        listen      127.0.0.1:8082;
+        proxy_pass  unix:%%TESTDIR%%/unix2.sock;
+
+        proxy_protocol on;
+    }
+}
+
+EOF
+
+$t->write_file('t', 'SEE-THIS');
+$t->run();
+
+###############################################################################
+
+my $r = http_get('/t');
+like($r, qr/X-IP: unix/, 'remote_addr');
+like($r, qr/X-PP: 127.0.0.1/, 'proxy_protocol_addr');
+
+$r = http_get('/pp');
+like($r, qr/X-IP: 127.0.0.1/, 'remote_addr realip');
+
+# listen proxy_protocol in stream
+
+is(get(8081), 'unix::127.0.0.1', 'stream proxy_protocol');
+is(get(8082), '127.0.0.1:127.0.0.1', 'stream proxy_protocol realip');
+
+###############################################################################
+
+sub get {
+	Test::Nginx::Stream->new(PeerPort => port(shift))->read();
+}
+
+###############################################################################
