これはFastCGIを使ってZopeのためにNGINXをフロントエンドとして使うための例です。
location ~ /zope(/|$) {
fastcgi_pass unix:/var/run/plone-site.sock;
include /etc/nginx/fastcgi_params;
set $fixed_content_length $content_length;
if ( $fixed_content_length = "" ) {
set $fixed_content_length "0";
}
set $path_info "";
if ( $document_uri ~ "^/zope/(.*)$" ) {
set $path_info $1;
}
fastcgi_param CONTENT_LENGTH $fixed_content_length;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_NAME /zope;
}
location /zope(/|$)
は、最後に/
が無いhome URL (つまり http://yoursite.com/zope
) でもアクセス可能な場合にのみ必要とされます。そうでなければ、location /zope/
で十分です。
それは少し簡単な形式ですることもできます:
location ~ /zope(?<path_info>/.*|$) {
fastcgi_pass unix:/var/run/plone-site.sock;
include /etc/nginx/fastcgi_params;
set $fixed_content_length $content_length;
if ( $fixed_content_length = "" ) {
set $fixed_content_length "0";
}
fastcgi_param CONTENT_LENGTH $fixed_content_length;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_NAME /zope;
}
Zope (少なくともバージョン 2.10) は CONTENT_LENGTH
と一緒にatoi
を呼びます。つまり、exceptions.ValueError
は、CONTENT_LENGTH
が存在するが空の文字列の場合に、投げられるでしょう。
非root webパス上にマウントされた場合 (この例では/zope
)、 ZopeはApacheのやり方で SCRIPT_NAME
と PATH_INFO
を期待します。 (Zope rootとしてSCRIPT_NAME
、オブジェクトのリファレンスとしてPATH_INFO
)。