当前位置: 首页 > 工具软件 > SCGi > 使用案例 >

SCGI

苏富
2023-12-01

 

 

SCGI(Simple Common Gateway Interface)FastCGI相似,也是CGI的一个替代协议,SCGI源于Python社区,

 

SCGI模块能够使得NginxSCGI进程进行互相配合工作,并且能够控制将什么参数传递到SCGI进程,本模块Nginx服务器于0.8.42版本开始提供使用。

 

配置示例

 

location / {

  include scgi_params;

  scgi_pass localhost:9000;

}

   

具有缓存的示例:

 

 

 

http {

  scgi_cache_path   /path/to/cache  levels=1:2

                       keys_zone=NAME:10m

                       inactive=5m;

 

  server {

    location / {

      scgi_pass    127.0.0.1:9000;

      scgi_cache   NAME;

      scgi_cache_valid   200 302  1h;

      scgi_cache_valid   301      1d;

      scgi_cache_valid   any      1m;

      scgi_cache_min_uses  1;

      scgi_cache_use_stale error  timeout invalid_header http_500;

    }

  }

}

   

   

 

    SCGI模块提供了一下命令。

 

指令名称:scgi_bind

    能:在调用connect()之前,该指令会将每一个上游连接的套接字绑定到本地的IP地址上。如果主机有多个网卡接口/别名,并且你想通过指定的网卡接口/ip地址对外连接,那么这个功能将会有用。

    : scgi_bind address

默 认 值: none

使用环境: http, server, location

    如:

 

scgi_bind  192.168.1.1;

       

指令名称:scgi_buffer_size

    能:该指令用于设置缓冲区的大小,缓存区用于缓存从scgi服务器获取的响应的第一部分,通常来说,这部分响应内容是一个简单的响应头。缓存的默认值通常来说等于由scgi_buffers指令设置的一个缓冲区的大小。

    : scgi_buffer_size the_size

默 认 值: scgi_buffer_size 4k/8k

使用环境: http, server, location

 

 

指令名称:scgi_buffers

    能:该指令设置了缓冲的大小和数量,用于缓存从SCGI服务器读取的数据。默认情况下,一个缓冲(buffer)等于一个内存页面,具体的值依赖于具体的操作系统,可能是4K, 8K 或者 16K

    : scgi_buffers the_number is_size

默 认 值: scgi_buffers 8 4k/8k

使用环境: http, server, location

 

指令名称:scgi_busy_buffers_size

    能:设置“忙”缓冲的大小,按照一般的用法来说就是将其设为scgi_buffers的两倍

    : scgi_busy_buffers_size size

默 认 值: scgi_busy_buffers_size ["#scgi_buffer_size"] * 2

使用环境: http, server, location, if

 

指令名称:scgi_cache

    能:为缓存实际使用的共享内存指定一个区域,定义一个cache区域(zone)。对区域(zone)定义标识符是为了进一步在其它指令中使用。相同的区域可以用在不同的地方。

    : scgi_cache zone|off

默 认 值: off

使用环境: http, server, location

 

指令名称:scgi_cache_bypass

    能:该指令指定什么情况下的客户端的请求将会“绕开”读取被缓存的响应,并且将客户端请求传递到上游服务器。该指令从0.8.46版本开始提供。例如:

 

scgi_cache_bypass $cookie_nocache  $arg_nocache$arg_comment;

scgi_cache_bypass $http_pragma     $http_authorization;

   

    如果变量为空或者是为"0",那么表达式将会为false。例如,在上面的这个例子中,如果在请求中设置了"nocache",那么这些请求总是被传递到后台服务器。

 

    需要注意的是,来自于后台的这些响应仍旧有资格被缓存,见于此方式,可以通过它来刷新缓存中的某个缓存条目,具体的方式是通过发送一个具有自己选择的(请求)头的请求,例如,"My-Secret-Header: 1",于是,便可以设置一个scgi_no_cache行,例如:

 

scgi_no_cache $http_my_secret_header;

   

    以此方式来刷新缓存的条目。

    : scgi_cache_bypass variable1 variable2...

默 认 值: none

使用环境: http, server, location

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27043155/viewspace-733094/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27043155/viewspace-733094/

相关阅读

相关文章

相关问答