如何使用 nginx 作为缓存反向代理来替代 squid/varnish

如何使用 nginx 作为缓存反向代理来替代 squid/varnish

以下是我们目前在应用程序上的设置

但是我们想添加 nginx 作为反向代理缓存,就像 squid 或 varnish 一样,是否可以编辑此配置以启用该缓存行为,或者我是否需要在此设置前面添加另一个 nginx,就像我对 squid 或 varnish 所做的那样

如果不用 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;

    }

}

答案1

答案2

我建议使用 Varnish,因为它可以作为反向代理,并且可以执行很多在这个容量上比 nginx 更快。

Varnish 针对性能进行了优化。它会做一些疯狂的事情,比如将其配置文件编译成 C 对象,然后将其加载到内存中。这看起来可能没什么,但当你在配置中定义一些逻辑时,它确实会有所不同(通过 Varnish 自己的 VCL 语言,这本身就很酷)。

我明白你的意思,nginx 并不是一个可以做所有事情的单片程序(不像 apache)。它只做几件事,并把它们做好……如果有更好的反向代理(Varnish),那就用它吧!

只是我的想法:)

相关内容