nginx as a caching reverse proxy to replace squid/varnish
Igor Sysoev
is at rambler-co.ru
Wed Aug 19 16:38:06 MSD 2009
On Mon, Aug 17, 2009 at 02:39:52PM -0700, mobiledreamers at gmail.com wrote:
> Hey guys
> the following is our current setup on the apps
>
> but we would like to add nginx as a reverse proxy cache much like squid or
> varnish
> is it possible to edit this config to enable that caching behavior or do i
> need to add another nginx in front of this set up like i would do for squid
> or varnish
>
> if this can be done without resorting to usage of squid and varnish it would
> be nice to have the complete setup in nginx
>
>
>
> thanks a lot
>
>
> upstream backend_appname{
> #start1.someserver.com
> server start1.someserver.com:7810 fail_timeout=3s;
> server start1.someserver.com:7811 fail_timeout=3s;
> server start1.someserver.com:7812 fail_timeout=3s;
> server start1.someserver.com:7813 fail_timeout=3s;
>
>
> }
> server {
> server_name appname.someserver.com;
> listen 80;
> access_log logs/access_appname.log;
> #error_log logs/error_appname.log;
>
> location /nginx_status {
> stub_status on;
> access_log off;
> }
>
> location /static {
> root /home/someuser/work/appname;
> expires max;
> add_header Cache-Control
> public,max-age=604800,post-check=604800,pre-check=1209600;
> }
> location / {
> root /home/someuser/work/appname;
> fastcgi_pass backend_appname;
> set $addr $remote_addr;
>
> if ($http_x_forwarded_for ~ "(?:^|,)\s*(\d+\.\d+\.\d+\.\d+)\s*$") {
> set $addr $1;
> }
>
> fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
> fastcgi_param PATH_INFO $fastcgi_script_name;
> fastcgi_param QUERY_STRING $query_string;
> fastcgi_param CONTENT_TYPE $content_type;
> fastcgi_param CONTENT_LENGTH $content_length;
> fastcgi_param REQUEST_METHOD $request_method;
> fastcgi_param REMOTE_ADDR $addr;
> fastcgi_param REMOTE_PORT $remote_port;
> fastcgi_param SERVER_PROTOCOL $server_protocol;
> fastcgi_param SERVER_ADDR $server_addr;
> fastcgi_param SERVER_PORT $server_port;
> fastcgi_param SERVER_NAME $server_name;
>
> }
>
> }
Instead of
set $addr $remote_addr;
if ($http_x_forwarded_for ~ "(?:^|,)\s*(\d+\.\d+\.\d+\.\d+)\s*$") {
set $addr $1;
}
fastcgi_param REMOTE_ADDR $addr;
you should use
set_real_ip_from 0.0.0.0/32;
real_ip_header X-Forwarded-For;
fastcgi_param REMOTE_ADDR $remote_addr;
--
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list