Nginx是多个位置指令的一个别名

时间:2017-10-11 14:22:40

标签: nginx nginx-location

我已在一个单独的目录中安装了一个项目,以使该项目在多个域上可用

location ^~ /phpRedisAdmin/css/ {

        alias /home/phpRedisAdmin/css/;
}

location ^~ /phpRedisAdmin/js/ {

        alias /home/phpRedisAdmin/js/;
}

location ^~ /phpRedisAdmin/images/ {

        alias /home/phpRedisAdmin/images/;
}

为了防止为每个项目子目录声明一个位置指令,是否可以声明一个可以处理所有可能别名的位置指令呢?

我正在寻找这样的东西(我不知道如何在别名指令中检索括号中的内容):

location ^~ /phpRedisAdmin/(css|images|js)/ {

        alias /home/phpRedisAdmin/>> what should I insert here? <</;
}

问题解决了,我最终使用了这个解决方案

location ^~ /phpRedisAdmin/(css|images|js)$ {
    alias /home/phpRedisAdmin/$1;
}

2 个答案:

答案 0 :(得分:0)

您可以尝试以下

   location ~* /phpRedisAdmin/(?P<folder>css|images|js)/ {
        alias /home/phpRedisAdmin/$folder;
    }

答案 1 :(得分:0)

您不应该使用start sshd... /bin/sh: 0: Can't open /bin/which /etc/init.d/ssh: 424: .: Can't open /lib/lsb/init-functions.d/20-left-info-blocks start serf... Error connecting to Serf agent: dial tcp 127.0.0.1:7373: connection refused 指令,其中alias指令就足够了。一种解决方案是为所有低于root的URI定义location块。例如:

/phpRedisAdmin

如果您需要在此location ^~ /phpRedisAdmin/ { root /home; location ~ \.php$ { ... } } 中执行PHP脚本,请添加嵌套位置(如上所示)。

如果您必须使用带有location的正则表达式location,则需要捕获URI的整个其余部分。例如:

alias

有关详细信息,请参阅this document