Nginx - 静态文件与root和别名混淆

Nginx - 静态文件与root和别名混淆

我需要通过我的应用服务器提供我的应用程序8080,以及来自目录的静态文件,而无需触及应用服务器。我拥有的nginx配置是这样的......

    # app server on port 8080
    # nginx listens on port 8123
    server {
            listen          8123;
            access_log      off;
            location /static/ {
                    # root /var/www/app/static/;
                    alias /var/www/app/static/;
                    autoindex off;
            }
            location / {
                    proxy_pass              http://127.0.0.1:8080;
                    proxy_set_header        Host             $host;
                    proxy_set_header        X-Real-IP        $remote_addr;
                    proxy_set_header        X-Forwarded-For  $proxy_add_x_forwarded_for;
            }
    }

现在,使用此配置,一切正常。请注意,该root指令已被注释掉。

如果我激活root和停用alias- 它会停止工作。但是,当我/static/root它删除尾随它开始再次工作。

有人可以解释发生了什么。还请解释清楚和冗长之间有什么区别rootalias和它们的用途。


HUX布斯
浏览 744回答 3
3回答

RISEBY

就像@treecoder一样在root指令的情况下,将完整路径附加到根,包括位置部分,而在alias指令的情况下,仅将路径中不包括位置部分的部分附加到别名。一张图片胜过千言万语用于root:用于alias:

婷婷同学_

你的情况,你可以使用root指令,因为$uri该部分location指令是与去年相同的root指令部分。Nginx文档也提供了它:当location匹配指令值的最后一部分时:location /images/ {     alias /data/w3/images/;}最好使用root指令:location /images/ {     root /data/w3;}和root指令将附加$uri到路径。
打开App,查看更多内容
随时随地看视频慕课网APP