Nginx如何缩短代码?

Nginx如何缩短代码?,nginx,Nginx,我的nginx配置: location ~(\d*?)-(\d*?).news.html{ try_files $uri $uri/ /controller/news.php?id=$2&count=$3; } location ~/(\d*?)-(\d*?).journal.html { try_files $uri $uri/ /controller/journal.php?id=$1&count=$2; } location ~/(\d*?)-(\d*?

我的nginx配置:

location ~(\d*?)-(\d*?).news.html{
    try_files $uri $uri/ /controller/news.php?id=$2&count=$3;
}

location ~/(\d*?)-(\d*?).journal.html {
    try_files $uri $uri/ /controller/journal.php?id=$1&count=$2;
}

location ~/(\d*?)-(\d*?).event.html{
    try_files $uri $uri/ /controller/event.php?id=$1&count=$2;
}

location ~ /news.php$ {
    fastcgi_cache my_cache;
    fastcgi_cache_key $scheme$host$request_uri$request_method;

    #cache for 2 hours
    fastcgi_cache_valid 200 2h;

    include /etc/nginx/fastcgi.conf;
    fastcgi_pass   unix:/tmp/php5-fpm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

location ~ /journal.php$ {
    fastcgi_cache my_cache;
    fastcgi_cache_key $scheme$host$request_uri$request_method;

    #cache for 1 day
    fastcgi_cache_valid 200 1d;

    include /etc/nginx/fastcgi.conf;
    fastcgi_pass   unix:/tmp/php5-fpm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

location ~ /event.php$ {
    fastcgi_cache my_cache;
    fastcgi_cache_key $scheme$host$request_uri$request_method;

    #cache for 5 hours
    fastcgi_cache_valid 200 5h;

    include /etc/nginx/fastcgi.conf;
    fastcgi_pass   unix:/tmp/php5-fpm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

location ~ \.php$ {
    include /etc/nginx/fastcgi.conf;
    fastcgi_pass   unix:/tmp/php5-fpm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
我有三个(或更多)
位置
,html url重定向到相应的php脚本,并且具有不同的
fastcgi\u cache\u有效
时间

因此,我需要添加总共六条
位置路由
,以处理此类逻辑。但在底部,其他php脚本需要一个不带缓存的
php位置路由


但是,所有
php位置路由
都具有几乎相同的属性。如何在所有
php位置路由中共享它?或者有没有其他更短的方法来实现相同的机制?

我想您至少可以将此代码移动到外部文件中

include /etc/nginx/fastcgi.conf;
fastcgi_pass   unix:/tmp/php5-fpm.sock;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
include        fastcgi_params;
然后用类似于

include /path/to/php4fpm-nginx-fastcgi.conf;
位置解析看起来也是可替换的

location ~(\d*?)-(\d*?).news.html{
    try_files $uri $uri/ /controller/news.php?id=$2&count=$3;
}

location ~/(\d*?)-(\d*?).journal.html {
    try_files $uri $uri/ /controller/journal.php?id=$1&count=$2;
}

location ~/(\d*?)-(\d*?).event.html{
    try_files $uri $uri/ /controller/event.php?id=$1&count=$2;
}

我会更深入地在条件中使用
set$var“value”
,然后重用代码,但让它成为您的家庭作业

location ~(\d*?)-(\d*?).(news|journal|event).html{
    # note it has changed order for vars.
    try_files $uri $uri/ /controller/$3.php?id=$1&count=$2;
}