Назад | Перейти на главную страницу

как использовать nginx в качестве кэширующего обратного прокси для замены squid / varnish

Ниже приведены наши текущие настройки приложений.

но мы хотели бы добавить nginx в качестве кеша обратного прокси, очень похожего на squid или varnish, можно ли отредактировать эту конфигурацию, чтобы включить такое поведение кеширования, или мне нужно добавить еще один nginx перед этой настройкой, как я бы сделал для squid или лак

если это можно сделать, не прибегая к использованию squid и varnish, было бы неплохо иметь полную настройку в nginx

большое спасибо

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;

    }

}

Вы можете использовать nginx в качестве кэширующего обратного прокси. Следующие ссылки будут полезны.

http://staff.adams.edu/~cdmiller/posts/nginx-reverse-proxy-cache/

http://staff.adams.edu/~cdmiller/posts/nginx-reverse-proxy-cache/

http://forum.nginx.org/read.php?2,4979,46962

Я бы предложил вместо этого использовать Varnish, поскольку он создан как обратный прокси и может выполнять много быстрее, чем nginx в этом качестве.

Лак настроен на исполнение. Он делает сумасшедшие вещи, например компилирует свои файлы конфигурации в объекты C, которые затем загружаются в его память. Это может показаться не таким уж большим, но это действительно имеет значение, если у вас есть некоторая логика, определенная в конфигурациях (через собственный язык VCL Varnish, что само по себе круто).

Я понимаю, к чему вы клоните, bu nginx - это не монолитная программа, которая делает все (в отличие от apache). Он предназначен для нескольких вещей и делает их хорошо ... если есть лучший обратный прокси (Varnish), используйте его!

Только мои мысли :)