nginx reload fails with [emerg] host not found in upstream

姚伟斌 yaoweibin at gmail.com
Fri Dec 7 04:24:32 UTC 2012


I think your BIND server is suspicious. In Nginx, it's just do the
call gethostbyname() when reloading. It's normal call in the glibc.

Can you write a simple C code to use the gethostbyname() call for
confirmation?

2012/12/7 groknaut <nginx-forum at nginx.us>

> hello --
>
> nginx will not reload on some of our proxy servers, but does on others. all
> are running the same version: nginx/1.0.15. the reload fails with error:
>
>   [emerg] 26903#0: host not found in upstream "webappNNx:8080" in
> /etc/nginx/upstream.conf:N
>
> the issue appears to be related to nginx's ability to resolve a hostname.
> our proxy servers use BIND servers that we run ourselves. the BIND servers
> are returning answers just fine afaict. and when i reproduce this problem
> on
> a proxy server, i sniff the network and can confirm the proxy is asking the
> nameserver for an A record, and gets that answer back successfully.
>
>
> there is a workaround i found, but i would really really rather not resort
> to this: putting backend (aka upstream :<) app nodes' into /etc/hosts. i
> have also heard suggestions to put the backend nodes' IPs into the proxy
> pool file (upstream.conf), but again, i'd rather not because it's not human
> readable, especially when firefighting. i'm hoping there is a better
> solution out there than these workarounds.
>
> we are using a thirdparty module:
> https://github.com/yaoweibin/nginx_upstream_check_module. no i have not
> tried to reproduce this problem without the module. i don't know how i
> would
> since we need the functionality that it provides. and yes i will follow up
> with the module author.
>
>
> any help? thank you very much in advance. all the gory details follow.
>
> kallen
>
> straces available upon request :>
>
>
> a proxy server where the problem does occur:
> ============================================
>
> i'd like to note that the nginx parent on this server has been running for
> about 6 months.
>
> i try to reload, but the reload will not complete due to the error
>
>   [emerg] 26903#0: host not found in upstream "webapp04a:8080" in
> /etc/nginx/upstream.conf:3
>
>
> 12/07 01:28[root at proxy2-prod-ue1 ~]# nginx -t
> nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
> nginx: configuration file /etc/nginx/nginx.conf test is successful
>
> 12/07 01:28[root at proxy2-prod-ue1 ~]# ps wwwwaxuf | grep ngin[x]
> root     20569  0.0  0.2  25652  5364 ?        Ss   Jun20   0:03 nginx:
> master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
> nginx     3401  0.4  0.8  37056 15960 ?        S    Dec05   8:39  \_ nginx:
> worker process
> nginx     3402  0.4  1.1  40916 19836 ?        S    Dec05   8:36  \_ nginx:
> worker process
>
> 12/07 01:29[root at proxy2-prod-ue1 ~]# cat /etc/nginx/upstream.conf
> ## Tomcat via HTTP
> upstream tomcats_http {
>     server webapp02c:8080 max_fails=2;
>     server webapp06c:8080 max_fails=2;
>     server roapp02c:8080 backup;
>     check interval=3000 rise=3 fall=3 timeout=1000 type=http
> default_down=false;
>     check_http_send "GET /healthcheck/version HTTP/1.0\r\n\r\n";
> }
>
> 12/07 01:29[root at proxy2-prod-ue1 ~]# tcpdump -nvv -i eth0 -s0 -X port 53
> and
> host 10.24.27.66
>
> 12/07 01:30[root at proxy2-prod-ue1 ~]# strace -f -s 2048 -ttt -T -p 20569 -o
> nginx-parent-strace
> Process 20569 attached - interrupt to quit
>
>
> 12/07 01:27[root at proxy2-prod-ue1 ~]# /etc/init.d/nginx reload; tail -f
> /var/log/nginx/error.log
> Reloading nginx:                                           [  OK  ]
> 2012/12/07 00:05:29 [debug] 12290#0: bind() 0.0.0.0:80 #6
> 2012/12/07 00:05:29 [debug] 12290#0: bind() 0.0.0.0:443 #7
> 2012/12/07 00:05:29 [debug] 12290#0: counter: B7F38080, 1
> 2012/12/07 01:28:37 [debug] 22928#0: bind() 0.0.0.0:80 #6
> 2012/12/07 01:28:37 [debug] 22928#0: bind() 0.0.0.0:443 #7
> 2012/12/07 01:28:37 [debug] 22928#0: counter: B7F8F080, 1
> 2012/12/07 01:31:44 [debug] 23383#0: bind() 0.0.0.0:80 #6
> 2012/12/07 01:31:44 [debug] 23383#0: bind() 0.0.0.0:443 #7
> 2012/12/07 01:31:44 [debug] 23383#0: counter: B7F56080, 1
> 2012/12/07 01:31:44 [emerg] 20569#0: host not found in upstream
> "webapp02c:8080" in /etc/nginx/upstream.conf:3
>
>
> as soon as that reload fires, i do see nameservice traffic on the wire. so
> it is NOT a matter of DNS service being unavailable. i note that it does
> ask
> for the A record twice. i don't know why.
>
> 01:31:44.426376 IP (tos 0x0, ttl  64, id 30918, offset 0, flags [DF],
> proto:
> UDP (17), length: 72) 10.45.33.82.60723 > 10.24.27.66.domain: [bad udp
> cksum
> 799c!]  18875+ A? webapp02c.prod.romeovoid.com. (44)
>         0x0000:  4500 0048 78c6 4000 4011 934e 0af5 2b52  E..Hx. at .@..N..+R
>         0x0010:  0af4 ed55 ed33 0035 0034 2ed6 49bb 0100  ...U.3.5.4..I...
>         0x0020:  0001 0000 0000 0000 0977 6562 6170 7030  .........webapp0
>         0x0030:  3263 0470 726f 6407 7361 6173 7572 6503
> 2c.prod.romeovoid.
>         0x0040:  636f 6d00 0001 0001                      com.....
> 01:31:44.427301 IP (tos 0x0, ttl  63, id 42228, offset 0, flags [none],
> proto: UDP (17), length: 156) 10.24.27.66.domain > 10.45.33.82.60723: [udp
> sum ok]  18875* q: A? webapp02c.prod.romeovoid.com. 1/2/2
> webapp02c.prod.romeovoid.com. A 10.51.23.17 ns: prod.romeovoid.com. NS
> ns1.prod.romeovoid.com., prod.romeovoid.com. NS ns2.prod.romeovoid.com.
> ar:
> ns1.prod.romeovoid.com. A 10.192.83.14, ns2.prod.romeovoid.com. A
> 10.24.27.66 (128)
>         0x0000:  4500 009c a4f4 0000 3f11 a7cc 0af4 ed55  E.......?......U
>         0x0010:  0af5 2b52 0035 ed33 0088 e8c5 49bb 8580  ..+R.5.3....I...
>         0x0020:  0001 0001 0002 0002 0977 6562 6170 7030  .........webapp0
>         0x0030:  3263 0470 726f 6407 7361 6173 7572 6503
> 2c.prod.romeovoid.
>         0x0040:  636f 6d00 0001 0001 c00c 0001 0001 0000  com.............
>         0x0050:  003c 0004 0a73 2aab c016 0002 0001 0001  .<...s*.........
>         0x0060:  5180 0006 036e 7331 c016 c016 0002 0001  Q....ns1........
>         0x0070:  0001 5180 0006 036e 7332 c016 c048 0001  ..Q....ns2...H..
>         0x0080:  0001 0000 003c 0004 0ac0 530e c05a 0001  .....<....S..Z..
>         0x0090:  0001 0000 003c 0004 0af4 ed55            .....<.....U
> 01:31:44.427420 IP (tos 0x0, ttl  64, id 30918, offset 0, flags [DF],
> proto:
> UDP (17), length: 72) 10.45.33.82.60723 > 10.24.27.66.domain: [bad udp
> cksum
> 8c21!]  50344+ A? webapp02c.prod.romeovoid.com. (44)
>         0x0000:  4500 0048 78c6 4000 4011 934e 0af5 2b52  E..Hx. at .@..N..+R
>         0x0010:  0af4 ed55 ed33 0035 0034 2ed6 c4a8 0100  ...U.3.5.4......
>         0x0020:  0001 0000 0000 0000 0977 6562 6170 7030  .........webapp0
>         0x0030:  3263 0470 726f 6407 7361 6173 7572 6503
> 2c.prod.romeovoid.
>         0x0040:  636f 6d00 0001 0001                      com.....
> 01:31:44.428050 IP (tos 0x0, ttl  63, id 42229, offset 0, flags [none],
> proto: UDP (17), length: 156) 10.24.27.66.domain > 10.45.33.82.60723: [udp
> sum ok]  50344* q: A? webapp02c.prod.romeovoid.com. 1/2/2
> webapp02c.prod.romeovoid.com. A 10.51.23.17 ns: prod.romeovoid.com. NS
> ns2.prod.romeovoid.com., prod.romeovoid.com. NS ns1.prod.romeovoid.com.
> ar:
> ns1.prod.romeovoid.com. A 10.192.83.14, ns2.prod.romeovoid.com. A
> 10.24.27.66 (128)
>         0x0000:  4500 009c a4f5 0000 3f11 a7cb 0af4 ed55  E.......?......U
>         0x0010:  0af5 2b52 0035 ed33 0088 6dd8 c4a8 8580  ..+R.5.3..m.....
>         0x0020:  0001 0001 0002 0002 0977 6562 6170 7030  .........webapp0
>         0x0030:  3263 0470 726f 6407 7361 6173 7572 6503
> 2c.prod.romeovoid.
>         0x0040:  636f 6d00 0001 0001 c00c 0001 0001 0000  com.............
>         0x0050:  003c 0004 0a73 2aab c016 0002 0001 0001  .<...s*.........
>         0x0060:  5180 0006 036e 7332 c016 c016 0002 0001  Q....ns2........
>         0x0070:  0001 5180 0006 036e 7331 c016 c05a 0001  ..Q....ns1...Z..
>         0x0080:  0001 0000 003c 0004 0ac0 530e c048 0001  .....<....S..H..
>         0x0090:  0001 0000 003c 0004 0af4 ed55            .....<.....U
> 01:31:44.428142 IP (tos 0x0, ttl  64, id 30918, offset 0, flags [DF],
> proto:
> UDP (17), length: 72) 10.45.33.82.60723 > 10.24.27.66.domain: [bad udp
> cksum
> 1632!]  45086+ A? webapp06c.prod.romeovoid.com. (44)
>         0x0000:  4500 0048 78c6 4000 4011 934e 0af5 2b52  E..Hx. at .@..N..+R
>         0x0010:  0af4 ed55 ed33 0035 0034 2ed6 b01e 0100  ...U.3.5.4......
>         0x0020:  0001 0000 0000 0000 0977 6562 6170 7030  .........webapp0
>         0x0030:  3663 0470 726f 6407 7361 6173 7572 6503
> 6c.prod.romeovoid.
>         0x0040:  636f 6d00 0001 0001                      com.....
> 01:31:44.428791 IP (tos 0x0, ttl  63, id 42230, offset 0, flags [none],
> proto: UDP (17), length: 156) 10.24.27.66.domain > 10.45.33.82.60723: [udp
> sum ok]  45086* q: A? webapp06c.prod.romeovoid.com. 1/2/2
> webapp06c.prod.romeovoid.com. A 10.195.76.80 ns: prod.romeovoid.com. NS
> ns1.prod.romeovoid.com., prod.romeovoid.com. NS ns2.prod.romeovoid.com.
> ar:
> ns1.prod.romeovoid.com. A 10.192.83.14, ns2.prod.romeovoid.com. A
> 10.24.27.66 (128)
> [snip]
>
>
> the workaround, put all backend nodes (in upstream.conf) into /etc/hosts :<
>
> 12/07 01:34[root at proxy2-prod-ue1 ~]# tail -3 /etc/hosts
> 10.51.23.17 webapp02c.prod.romeovoid.com webapp02c
> 10.195.76.80 webapp06c.prod.romeovoid.com webapp06c
> 10.96.23.87 roapp02c.prod.romeovoid.com roapp02c
>
> and now, it will reload just fine:
>
> 12/07 01:34[root at proxy2-prod-ue1 ~]# /etc/init.d/nginx reload; tail -f
> /var/log/nginx/error.log
> Reloading nginx:                                           [  OK  ]
> 2012/12/07 01:35:39 [debug] 24076#0: bind() 0.0.0.0:80 #6
> 2012/12/07 01:35:39 [debug] 24076#0: bind() 0.0.0.0:443 #7
> 2012/12/07 01:35:39 [debug] 24076#0: counter: B7FCD080, 1
> 2012/12/07 01:35:39 [debug] 20569#0: http upstream check, find
> oshm_zone:092C6390, opeers_shm: B7451000
> 2012/12/07 01:35:39 [debug] 20569#0: http upstream check: inherit
> opeer:10.51.23.17:8080
> 2012/12/07 01:35:39 [debug] 20569#0: http upstream check: inherit
> opeer:10.195.76.80:8080
> 2012/12/07 01:35:39 [debug] 20569#0: http upstream check: inherit
> opeer:10.96.23.87:8080
> 2012/12/07 01:35:39 [notice] 20569#0: using the "epoll" event method
> 2012/12/07 01:35:39 [notice] 20569#0: start worker processes
> 2012/12/07 01:35:39 [debug] 20569#0: channel 3:5
> 2012/12/07 01:35:39 [notice] 20569#0: start worker process 24078
> 2012/12/07 01:35:39 [debug] 20569#0: pass channel s:2 pid:24078 fd:3 to s:0
> pid:3401 fd:9
> 2012/12/07 01:35:39 [debug] 20569#0: pass channel s:2 pid:24078 fd:3 to s:1
> pid:3402 fd:11
> 2012/12/07 01:35:39 [debug] 20569#0: channel 14:15
> 2012/12/07 01:35:39 [notice] 20569#0: start worker process 24079
> 2012/12/07 01:35:39 [debug] 20569#0: pass channel s:3 pid:24079 fd:14 to
> s:0
> pid:3401 fd:9
> 2012/12/07 01:35:39 [debug] 20569#0: pass channel s:3 pid:24079 fd:14 to
> s:1
> pid:3402 fd:11
> 2012/12/07 01:35:39 [debug] 20569#0: pass channel s:3 pid:24079 fd:14 to
> s:2
> pid:24078 fd:3
> 2012/12/07 01:35:39 [debug] 20569#0: child: 0 3401 e:0 t:0 d:0 r:1 j:0
> 2012/12/07 01:35:39 [debug] 20569#0: child: 1 3402 e:0 t:0 d:0 r:1 j:0
> 2012/12/07 01:35:39 [debug] 20569#0: child: 2 24078 e:0 t:0 d:0 r:1 j:1
> 2012/12/07 01:35:39 [debug] 20569#0: child: 3 24079 e:0 t:0 d:0 r:1 j:1
> 2012/12/07 01:35:39 [debug] 20569#0: sigsuspend
> 2012/12/07 01:35:39 [debug] 24078#0: malloc: 09340600:6144
> 2012/12/07 01:35:39 [debug] 24079#0: malloc: 09340600:6144
> 2012/12/07 01:35:39 [debug] 24078#0: malloc: 0931D3E0:102400
>
>
>
>
> a proxy server where the problem does NOT occur:
> ================================================
>
> i'd like to note that the nginx parent on this server has been running for
> only about 1 month.
>
>
> 12/07 01:04[root at proxy5-prod-ue1 ~]# nginx -t
> nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
> nginx: configuration file /etc/nginx/nginx.conf test is successful
>
> 12/07 01:40[root at proxy5-prod-ue1 ~]# cat /etc/nginx/upstream.conf
> ## Tomcat via HTTP
> upstream tomcats_http {
>     server webapp09e:8080 max_fails=2;
>     server webapp10e:8080 max_fails=2;
>     server roapp05e:8080 backup;
>     check interval=3000 rise=3 fall=3 timeout=1000 type=http
> default_down=false;
>     check_http_send "GET /healthcheck/version HTTP/1.0\r\n\r\n";
> }
> 12/07 01:40[root at proxy5-prod-ue1 ~]# grep webapp /etc/hosts
> 12/07 01:41[root at proxy5-prod-ue1 ~]# # nothing as expected
>
> 12/07 01:42[root at proxy5-prod-ue1 ~]# ps wwwwaxuf | grep ngin[x]
> root      4817  0.0  0.3 106184  5528 ?        Ss   Nov07   0:00 nginx:
> master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
> nginx     8396  0.6  0.8 116692 15488 ?        S    00:36   0:25  \_ nginx:
> worker process
> nginx     8397  0.6  0.8 116296 15096 ?        S    00:36   0:25  \_ nginx:
> worker process
>
>
>
> 12/07 01:42[root at userproxy5-prod-ue1 ~]# /etc/init.d/nginx reload; tail -f
> /var/log/nginx/error.log
> Reloading nginx:                                           [  OK  ]
> 2012/12/07 01:42:44 [debug] 8396#0: posted event 0000000000000000
> 2012/12/07 01:42:44 [debug] 8396#0: worker cycle
> 2012/12/07 01:42:44 [debug] 8396#0: accept mutex locked
> 2012/12/07 01:42:44 [debug] 8396#0: epoll timer: 399
> 2012/12/07 01:42:44 [notice] 4817#0: signal 1 (SIGHUP) received,
> reconfiguring
> 2012/12/07 01:42:44 [debug] 4817#0: wake up, sigio 0
> 2012/12/07 01:42:44 [notice] 4817#0: reconfiguring
> 2012/12/07 01:42:44 [debug] 4817#0: posix_memalign: 00000000007F1BA0:16384
> @16
> 2012/12/07 01:42:44 [debug] 4817#0: posix_memalign: 000000000081FB60:16384
> @16
> 2012/12/07 01:42:44 [debug] 4817#0: malloc: 00000000008C1980:4096
> 2012/12/07 01:42:44 [debug] 4817#0: read: 6, 00000000008C1980, 4096, 0
> 2012/12/07 01:42:44 [debug] 4817#0: malloc: 00000000006E0A80:6912
> 2012/12/07 01:42:44 [debug] 4817#0: malloc: 00000000007E59C0:4280
> 2012/12/07 01:42:44 [debug] 4817#0: malloc: 00000000007A0610:4280
> 2012/12/07 01:42:44 [debug] 4817#0: malloc: 0000000000731E00:4280
> 2012/12/07 01:42:44 [debug] 4817#0: malloc: 0000000000774AD0:4280
> 2012/12/07 01:42:44 [debug] 4817#0: malloc: 0000000000873750:4280
> 2012/12/07 01:42:44 [debug] 4817#0: malloc: 0000000000781760:4280
> 2012/12/07 01:42:44 [debug] 4817#0: posix_memalign: 00000000008D1170:16384
> @16
> 2012/12/07 01:42:44 [debug] 4817#0: malloc: 00000000007EEA40:4096
> 2012/12/07 01:42:44 [debug] 4817#0: include /etc/nginx/mime.types
> 2012/12/07 01:42:44 [debug] 4817#0: include /etc/nginx/mime.types
> 2012/12/07 01:42:44 [debug] 4817#0: malloc: 000000000080F300:4096
> 2012/12/07 01:42:44 [debug] 4817#0: read: 8, 000000000080F300, 3463, 0
> 2012/12/07 01:42:44 [debug] 4817#0: malloc: 00000000006DCA90:4096
> 2012/12/07 01:42:44 [debug] 4817#0: posix_memalign: 00000000007642B0:16384
> @16
> 2012/12/07 01:42:44 [debug] 4817#0: posix_memalign: 00000000008B5F40:16384
> @16
> 2012/12/07 01:42:44 [debug] 4817#0: posix_memalign: 000000000075B000:16384
> @16
> 2012/12/07 01:42:44 [debug] 4817#0: posix_memalign: 000000000087E390:16384
> @16
> 2012/12/07 01:42:44 [debug] 4817#0: include upstream.conf
> 2012/12/07 01:42:44 [debug] 4817#0: include /etc/nginx/upstream.conf
>
>
>
> our config
> =====================
> upstream.conf:
>
> ## Tomcat via HTTP
> upstream tomcats_http {
>     server webapp02c:8080 max_fails=2;
>     server webapp06c:8080 max_fails=2;
>     server roapp02c:8080 backup;
>     check interval=3000 rise=3 fall=3 timeout=1000 type=http
> default_down=false;
>     check_http_send "GET /healthcheck/version HTTP/1.0\r\n\r\n";
> }
>
> nginx.conf:
>
> user nginx;
> worker_processes  2;
> syslog local2 nginx;
> error_log  syslog:warn|/var/log/nginx/error.log;
> pid        /var/run/nginx.pid;
> worker_rlimit_core  500M;
> working_directory   /var/coredumps/;
> events {
>   worker_connections  1024;
> }
> http {
>   include       /etc/nginx/mime.types;
>   default_type  application/octet-stream;
>   proxy_buffers 8 16k;
>   proxy_buffer_size 32k;
>   log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
>                     '$status $body_bytes_sent "$http_referer" '
>                     '"$http_user_agent" "$http_x_forwarded_for"';
>   access_log    syslog:warn|/var/log/nginx/access.log main;
>   sendfile on;
>   keepalive_timeout  65;
>   gzip on;
>   server {
>     listen       80;
>     server_name  _;
>     # put X-Purpose: preview into the trash. thank you Safari
>     if ($http_x_purpose ~* "preview") {
>        return 444;
>        break;
>     }
>     # http://wiki.nginx.org/HttpStubStatusModule
>     location /nginx-status {
>       stub_status on;
>       access_log off;
>       allow 10.0.0.0/8;
>       allow 127.0.0.1;
>       deny all;
>     }
>     location /upstream-status {
>       check_status;
>       access_log off;
>       allow 10.0.0.0/8;
>       allow 127.0.0.1;
>       deny all;
>     }
>     error_page  404     /404.html;
>     location = /404.html {
>       root   /usr/share/nginx/error;
>     }
>     error_page  403     /403.html;
>     location = /403.html {
>       root   /usr/share/nginx/error;
>     }
>     error_page  500 502 504   /500.html;
>     location = /500.html {
>       root   /usr/share/nginx/error;
>     }
>     error_page  503     /503.html;
>     location = /503.html {
>       root   /usr/share/nginx/error;
>     }
>     set $global_ssl_redirect 'yes';
>     if ($request_filename ~ "nginx-status") {
>       set $global_ssl_redirect 'no';
>     }
>     if ($request_filename ~ "upstream-status") {
>       set $global_ssl_redirect 'no';
>     }
>     if ($global_ssl_redirect ~* '^yes$') {
>       rewrite ^ https://$host$request_uri? permanent;
>       break;
>     }
>   }
>   ## Keep upstream defs in a separate file for easier pool membership
> control
>   include upstream.conf;
>   server {
>     listen  443;
>     server_name  _;
>     # put X-Purpose: preview into the trash. thank you Safari
>     if ($http_x_purpose ~* "preview") {
>        return 444;
>        break;
>     }
>     ssl on;
>     ssl_certificate certs/wildcard_void_com.crt;
>     ssl_certificate_key certs/wildcard_void_com.key;
>     ssl_protocols SSLv3 TLSv1;
>     ssl_ciphers HIGH:!ADH:!MD5;
>     ssl_session_cache shared:SSL:10m;
>     ssl_session_timeout 10m;
>     set_real_ip_from 10.0.0.0/8;
>     real_ip_header X-Forwarded-For;
>     add_header Cache-Control public;
>     ## Tomcat via HTTP
>     location / {
>       proxy_pass http://tomcats_http;
>       proxy_connect_timeout 10s;
>       proxy_next_upstream error invalid_header http_503 http_502 http_504;
>       proxy_set_header Host $host;
>       proxy_set_header X-Server-Port $server_port;
>       proxy_set_header X-Server-Protocol https;
>       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>       proxy_set_header Strict-Transport-Security max-age=315360000;
>       proxy_set_header X-Secure true;
>       proxy_set_header Transfer-Encoding ""; # OPS-475 remove if/when we
> update/punt Tomcat
>       if ($request_uri ~* "\.(ico|css|js|gif|jpe?g|png)") {
>         expires 365d;
>         break;
>       }
>     }
>     error_page  404     /404.html;
>     location = /404.html {
>       root   /usr/share/nginx/error;
>     }
>     error_page  403     /403.html;
>     location = /403.html {
>       root   /usr/share/nginx/error;
>     }
>     error_page  500 502 504   /500.html;
>     location = /500.html {
>       root   /usr/share/nginx/error;
>     }
>     error_page  503     /503.html;
>     location = /503.html {
>       root   /usr/share/nginx/error;
>     }
>   }
> }
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?2,233661,233661#msg-233661
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
>



-- 
Weibin Yao
Developer @ Server Platform Team of Taobao
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20121207/965c284a/attachment-0001.html>


More information about the nginx mailing list