annotate proxy_protocol2.t @ 1974:b5036a0f9ae0 default tip

Tests: improved compatibility when using recent "openssl" app. Starting with OpenSSL 3.0, "openssl genrsa" generates encrypted keys in PKCS#8 format instead of previously used PKCS#1 format. Further, since OpenSSL 1.1.0 such keys are using PBKDF2 hmacWithSHA256. Such keys are not supported by old SSL libraries, notably by OpenSSL before 1.0.0 (OpenSSL 0.9.8 only supports hmacWithSHA1) and by BoringSSL before May 21, 2019 (support for hmacWithSHA256 was added in 302a4dee6c), and trying to load such keys into nginx compiled with an old SSL library results in "unsupported prf" errors. To facilitate testing with old SSL libraries, keys are now generated with "openssl genrsa -traditional" if the flag is available.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 06 May 2024 00:04:26 +0300
parents 7102245abedf
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for haproxy protocol.
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 use lib 'lib';
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 ###############################################################################
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http access realip/);
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26
1798
7102245abedf Tests: removing unneeded changes in the previous commit.
Eugene Grebenschikov <e.grebenshchikov@f5.com>
parents: 1797
diff changeset
27 $t->write_file_expand('nginx.conf', <<'EOF')->plan(28);
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29 %%TEST_GLOBALS%%
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31 daemon off;
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 events {
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34 }
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 http {
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 %%TEST_GLOBALS_HTTP%%
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
39 log_format pp $remote_addr:$remote_port;
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40
1794
64f19063adfe Tests: merged tests for proxy protocol server variables.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1526
diff changeset
41 add_header X-IP $remote_addr!$remote_port;
64f19063adfe Tests: merged tests for proxy protocol server variables.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1526
diff changeset
42 add_header X-PP $proxy_protocol_addr!$proxy_protocol_port;
64f19063adfe Tests: merged tests for proxy protocol server variables.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1526
diff changeset
43 add_header X-PPS $proxy_protocol_server_addr!$proxy_protocol_server_port;
64f19063adfe Tests: merged tests for proxy protocol server variables.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1526
diff changeset
44
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 server {
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 listen 127.0.0.1:8080 proxy_protocol;
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 server_name localhost;
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 set_real_ip_from 127.0.0.1/32;
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 location /pp {
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 real_ip_header proxy_protocol;
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 error_page 404 =200 /t1;
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55 location /pp_4 {
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 deny 192.0.2.1/32;
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
57 access_log %%TESTDIR%%/pp4.log pp;
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 }
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
59
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60 location /pp_6 {
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 deny 2001:DB8::1/128;
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
62 access_log %%TESTDIR%%/pp6.log pp;
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 }
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64 }
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
65
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
66 location / { }
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 }
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68 }
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70 EOF
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72 $t->write_file('t1', 'SEE-THIS');
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 $t->run();
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 ###############################################################################
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77 my $p = pack("N3C", 0x0D0A0D0A, 0x000D0A51, 0x5549540A, 0x21);
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
78 my $tcp4 = $p . pack("CnN2n2", 0x11, 12, 0xc0000201, 0xc0000202, 123, 5678);
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79 my $tcp6 = $p . pack("CnNx8NNx8Nn2", 0x21, 36,
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
80 0x20010db8, 0x00000001, 0x20010db8, 0x00000002, 123, 5678);
1798
7102245abedf Tests: removing unneeded changes in the previous commit.
Eugene Grebenschikov <e.grebenshchikov@f5.com>
parents: 1797
diff changeset
81 my $tlv = $p . pack("CnN2n2x9", 0x11, 21, 0xc0000201, 0xc0000202, 123, 5678);
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82 my $unk1 = $p . pack("Cxx", 0x01);
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 my $unk2 = $p . pack("CnC4", 0x41, 4, 1, 2, 3, 4);
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84 my $r;
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86 # no realip, just PROXY header parsing
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 $r = pp_get('/t1', $tcp4);
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89 like($r, qr/SEE-THIS/, 'tcp4 request');
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
90 like($r, qr/X-PP: 192.0.2.1!123\x0d/, 'tcp4 proxy');
1795
88a098b00534 Tests: fixed previous commit mismerge.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1794
diff changeset
91 like($r, qr/X-PPS: 192.0.2.2!5678\x0d/, 'tcp4 proxy server');
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
92 unlike($r, qr/X-IP: (192.0.2.1|[^!]+!123\x0d)/, 'tcp4 client');
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
93
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94 $r = pp_get('/t1', $tcp6);
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95 like($r, qr/SEE-THIS/, 'tcp6 request');
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
96 like($r, qr/X-PP: 2001:DB8::1!123\x0d/i, 'tcp6 proxy');
1795
88a098b00534 Tests: fixed previous commit mismerge.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1794
diff changeset
97 like($r, qr/X-PPS: 2001:DB8::2!5678\x0d/i, 'tcp6 proxy server');
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
98 unlike($r, qr/X-IP: (2001:DB8::1|[^!]+!123\x0d)/i, 'tcp6 client');
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
99
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
100 $r = pp_get('/t1', $tlv);
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
101 like($r, qr/SEE-THIS/, 'tlv request');
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
102 like($r, qr/X-PP: 192.0.2.1!123\x0d/, 'tlv proxy');
1795
88a098b00534 Tests: fixed previous commit mismerge.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1794
diff changeset
103 like($r, qr/X-PPS: 192.0.2.2!5678\x0d/, 'tlv proxy server');
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
104 unlike($r, qr/X-IP: (192.0.2.1|[^!]+!123\x0d)/, 'tlv client');
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
106 $r = pp_get('/t1', $unk1);
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
107 like($r, qr/SEE-THIS/, 'unknown request 1');
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
108 like($r, qr/X-PP: !\x0d/, 'unknown proxy 1');
1794
64f19063adfe Tests: merged tests for proxy protocol server variables.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1526
diff changeset
109 like($r, qr/X-PPS: !\x0d/, 'unknown proxy server 1');
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
110
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
111 $r = pp_get('/t1', $unk2);
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
112 like($r, qr/SEE-THIS/, 'unknown request 2');
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
113 like($r, qr/X-PP: !\x0d/, 'unknown proxy 2');
1794
64f19063adfe Tests: merged tests for proxy protocol server variables.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1526
diff changeset
114 like($r, qr/X-PPS: !\x0d/, 'unknown proxy server 2');
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
115
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
116 # realip
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
117
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118 $r = pp_get('/pp', $tcp4);
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
119 like($r, qr/SEE-THIS/, 'tcp4 request realip');
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
120 like($r, qr/X-PP: 192.0.2.1!123\x0d/, 'tcp4 proxy realip');
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
121 like($r, qr/X-IP: 192.0.2.1!123\x0d/, 'tcp4 client realip');
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
122
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
123 $r = pp_get('/pp', $tcp6);
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
124 like($r, qr/SEE-THIS/, 'tcp6 request realip');
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
125 like($r, qr/X-PP: 2001:DB8::1!123\x0d/i, 'tcp6 proxy realip');
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
126 like($r, qr/X-IP: 2001:DB8::1!123\x0d/i, 'tcp6 client realip');
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
127
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
128 # access
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
129
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
130 $r = pp_get('/pp_4', $tcp4);
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
131 like($r, qr/403 Forbidden/, 'tcp4 access');
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
132
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
133 $r = pp_get('/pp_6', $tcp6);
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
134 like($r, qr/403 Forbidden/, 'tcp6 access');
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
135
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
136 # client address in access.log
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
137
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
138 $t->stop();
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
139
1526
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
140 is($t->read_file('pp4.log'), "192.0.2.1:123\n", 'tcp4 log');
b3bbb59dc324 Tests: merged $proxy_protocol_port tests with the rest for brevity.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1381
diff changeset
141 is($t->read_file('pp6.log'), "2001:db8::1:123\n", 'tcp6 log');
1309
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
142
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
143 ###############################################################################
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
144
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
145 sub pp_get {
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
146 my ($url, $proxy) = @_;
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
147 return http($proxy . <<EOF);
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
148 GET $url HTTP/1.0
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
149 Host: localhost
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
150
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
151 EOF
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
152 }
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
153
3eb1de7e3b41 Tests: proxy protocol v2 tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
154 ###############################################################################