Mercurial > hg > nginx-tests
annotate realip.t @ 570:f7bc1f74970a
Tests: avoid send errors in syslog tests with mail error_log.
Use a separate mail server block for syslog parsing tests to make sure
that syslog messages are always read by the receiver on the remote side.
Otherwise, syslog message might not be sent due to a pending socket error.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 07 May 2015 14:28:44 +0300 |
parents | a9621dbbd0d4 |
children | dc2f8aac0553 |
rev | line source |
---|---|
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for nginx realip module. |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use Test::More; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 BEGIN { use FindBin; chdir($FindBin::Bin); } |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 use lib 'lib'; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 use Test::Nginx; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 ############################################################################### |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 select STDERR; $| = 1; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 select STDOUT; $| = 1; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
217
ea574aae77cb
Tests: unbreak geo and realip tests in jails.
Maxim Dounin <mdounin@mdounin.ru>
parents:
216
diff
changeset
|
24 my $t = Test::Nginx->new()->has(qw/http realip/); |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 $t->write_file_expand('nginx.conf', <<'EOF'); |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 %%TEST_GLOBALS%% |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 |
249
6a0d934950bc
Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
247
diff
changeset
|
30 daemon off; |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 events { |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 } |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 http { |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 %%TEST_GLOBALS_HTTP%% |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 |
245
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
38 add_header X-IP $remote_addr; |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 real_ip_header X-Forwarded-For; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 server { |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 listen 127.0.0.1:8080; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 server_name localhost; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 |
245
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
45 location /1 { |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
46 set_real_ip_from 127.0.0.1/32; |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
47 set_real_ip_from 10.0.1.0/24; |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
48 real_ip_recursive off; |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
49 } |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
50 |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
51 location /2 { |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
52 set_real_ip_from 127.0.0.1/32; |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
53 set_real_ip_from 10.0.1.0/24; |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
54 real_ip_recursive on; |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 } |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 } |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 } |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 EOF |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 $t->write_file('1', ''); |
245
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
62 $t->write_file('2', ''); |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 $t->run(); |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 |
217
ea574aae77cb
Tests: unbreak geo and realip tests in jails.
Maxim Dounin <mdounin@mdounin.ru>
parents:
216
diff
changeset
|
65 plan(skip_all => 'no 127.0.0.1 on host') |
ea574aae77cb
Tests: unbreak geo and realip tests in jails.
Maxim Dounin <mdounin@mdounin.ru>
parents:
216
diff
changeset
|
66 if http_get('/1') !~ /X-IP: 127.0.0.1/m; |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 |
247
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
68 $t->plan(6); |
217
ea574aae77cb
Tests: unbreak geo and realip tests in jails.
Maxim Dounin <mdounin@mdounin.ru>
parents:
216
diff
changeset
|
69 |
ea574aae77cb
Tests: unbreak geo and realip tests in jails.
Maxim Dounin <mdounin@mdounin.ru>
parents:
216
diff
changeset
|
70 ############################################################################### |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 |
245
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
72 like(http_xff('/1', '192.0.2.1'), qr/^X-IP: 192.0.2.1/m, 'realip'); |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
73 like(http_xff('/1', '10.0.0.1, 192.0.2.1'), qr/^X-IP: 192.0.2.1/m, |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
74 'realip multi'); |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
75 like(http_xff('/1', '192.0.2.1, 10.0.1.1, 127.0.0.1'), |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
76 qr/^X-IP: 127.0.0.1/m, 'realip recursive off'); |
247
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
77 like(http_xff('/2', '10.0.1.1, 192.0.2.1, 127.0.0.1'), |
245
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
78 qr/^X-IP: 192.0.2.1/m, 'realip recursive on'); |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 |
247
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
80 like(http(<<EOF), qr/^X-IP: 10.0.1.1/m, 'realip multi xff recursive off'); |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
81 GET /1 HTTP/1.0 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
82 Host: localhost |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
83 X-Forwarded-For: 192.0.2.1 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
84 X-Forwarded-For: 127.0.0.1, 10.0.1.1 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
85 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
86 EOF |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
87 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
88 like(http(<<EOF), qr/^X-IP: 192.0.2.1/m, 'realip multi xff recursive on'); |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
89 GET /2 HTTP/1.0 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
90 Host: localhost |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
91 X-Forwarded-For: 10.0.1.1 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
92 X-Forwarded-For: 192.0.2.1 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
93 X-Forwarded-For: 127.0.0.1 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
94 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
95 EOF |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
96 |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
97 ############################################################################### |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
98 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
99 sub http_xff { |
245
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
100 my ($uri, $xff) = @_; |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
101 return http(<<EOF); |
245
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
102 GET $uri HTTP/1.0 |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
103 Host: localhost |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
104 X-Forwarded-For: $xff |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
105 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
106 EOF |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
107 } |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
108 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
109 ############################################################################### |