我有一个位置块/做所有我的fastcgi的东西,它有一个10秒的正常超时。 我希望能够对某些文件(/ admin,sitemap.xml)有不同的超时时间。 有没有简单的方法来做到这一点,而不是复制每个位置的整个位置块?
location /admin{ fastcgi_read_timeout 5m; #also use the location info below. } location /sitemap.xml{ fastcgi_read_timeout 5m; #also use the location info below. } location / { fastcgi_pass 127.0.0.1:8014; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param QUERY_STRING $query_string; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_pass_header Authorization; fastcgi_intercept_errors off; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param HTTP_X_FORWARDED_FOR $http_x_forwarded_for; }
我认为有两种可能性,其中第二种是最灵活的。
你可以尝试:
location /admin{ fastcgi_read_timeout 5m; include snippets/location.fcgi.conf; } location /sitemap.xml{ fastcgi_read_timeout 5m; include snippets/location.fcgi.conf; }
文件snippets/location.fcgi.conf (不需要位置块):
fastcgi_pass 127.0.0.1:8014; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param QUERY_STRING $query_string; # ...
或者我想你可以这样下去。
location / { # set you default, so we don't bomb out set $timeout 2s; # your other general stuff } location /sitemap.xml{ set $timeout 5m; include snippets/location.fcgi.conf; } location /admin{ fastcgi_read_timeout 5m; include snippets/location.fcgi.conf; }
注意:所有包含path总是相对于Nginx主configuration文件夹。
是的,只要你有一个符号链接,你可以把它们放在任何你想要的地方。
您不能在位置块之间inheritance,但是您可以使用include指令将所有通用configuration指令放在一个文件中,然后将其包含在每个位置中。