多个Nginx别名到一个位置

时间:2012-02-27 01:27:07

标签: regex nginx alias

我想为一个位置创建两个别名的位置规则。

这是用于一个地点的规则:

location ~ ^/images/(.*)$ { alias /var/www2/images/$1; }

我想要做的是在位置定义两个别名。所以,例如, 我可以访问http://domain.com/styles/file.csshttp://domain.com/css/file.css 它会转到一个别名,即/ var / www2 / styles /

我尝试过类似的东西,但它对我没用。

location ~ ^/(styles|css)(.*)$ { alias /var/www2/styles/$1; }

但又一次,我不太了解正则表达式。

2 个答案:

答案 0 :(得分:5)

尝试:

location ~ ^/(?:styles|css)/(.*)$ { alias /var/www2/styles/$1; }

或者

location ~ ^/(styles|css)/(.*)$ { alias /var/www2/styles/$2; }

$1指的是第一个捕获组(...)。当您添加另一个组时,它会引用该组。您可以改为使用非捕获组(?:...),也可以参考第二个捕获组$2

答案 1 :(得分:0)

如果有人正在寻找匹配以字符串开头而不是以字符串结尾的路径的正则表达式,那么下面的示例可以匹配/users/sales/invoices(例如以及像/users/settings这样的子路径:

location ~ ^\/(users|sales|invoices) {
     proxy_pass         http://sample.local; 
}