Condition in upstream
Igor Sysoev
igor at sysoev.ru
Thu Sep 13 07:30:30 UTC 2012
On Sep 13, 2012, at 1:04 , thigomes wrote:
> Just to complete the information, in my case I have two configuration
> according with the web server, so:
>
> # TO VARNISH
> location / {
> proxy_redirect off; # Do not redirect this proxy - It needs to be
> pass-through
> proxy_set_header Host $host;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> proxy_set_header X-Server-Address $server_addr;
> proxy_connect_timeout 5s;
> proxy_read_timeout 300s;
> proxy_pass_header Set-Cookie;
> proxy_pass http://localhost:6081; # Pass all traffic through to Varnish
> }
>
> TO APACHE
> location / {
> client_max_body_size 10m;
> client_body_buffer_size 128k;
> proxy_send_timeout 90;
> proxy_read_timeout 90;
> proxy_buffer_size 32k;
> proxy_buffers 8 16k;
> proxy_busy_buffers_size 64k;
> proxy_temp_file_write_size 64k;
> proxy_connect_timeout 30s;
> proxy_redirect http://domain.com:8081 http://domain.com;
> proxy_redirect http://www.domain.com:8081 http://www.domain.com;
>
> proxy_pass http://192.168.1.7:8081/;
> proxy_set_header Host $host;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> }
>
> In the case varnish server not response, the request will forward to apache
> server.
Backup servers are not supported with ip_hash upstream.
You should use something like this:
upstream backend {
server 192.168.1.5:6081; # varnish server
server 192.168.1.7:80 backup; # apache server
}
server {
location / {
proxy_pass http://backend;
...
}
}
However, you can omit varnish at all and use nginx built-in cache:
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=CACHE:10m;
server {
location / {
proxy_pass http://192.168.1.7;
proxy_cache CACHE;
...
}
}
--
Igor Sysoev
http://nginx.com/support.html
More information about the nginx
mailing list