nginx location 无法打开静态站点

nginx location 无法打开静态站点

我的 nginx 配置没有按预期工作。这是我在 nginx.conf 中的位置配置:

 location / {
            proxy_pass "https://localhost:9002";

        }

        location /app  { 

            root /usr/local/var/www;
            index index.html;
            # autoindex off;
            try_files $uri /index.html;

         }
  • 当我执行 /app/some-url 时它的打开方式http://本地主机:9002。我希望它能加载我的静态网站

  • 当我评论位置/块时,它可以正常工作并打开静态站点。

答案1

使用root指令,通过将值与 URI 连接起来计算静态资源的路径名root。在您的例子中,URI/app/foo.css应位于/usr/local/var/www/app/foo.css。请注意,app是目录中的子目录www。请参阅这个文件了解详情。

指令的最后一项try_files是 URI、错误代码或命名位置。静态应用程序的 URI 以 开头/app,因此默认 URI 可能应该/app/index.html用于定位正确的文件。请参阅这个文件了解详情。

出于简单和效率的原因,最好的解决方案是将所有文件移动到与 URI 前缀同名的目录中(例如app)。

例如:

/usr/local/var/www/app/index.html
/usr/local/var/www/app/foo.js
/usr/local/var/www/app/foo.css

Nginx 配置如下:

location /app {
    root /usr/local/var/www;
    index index.html;

    try_files $uri $uri/ /app/index.html;
}

如果包含静态应用程序的目录与用于访问它的 URI 前缀不同,则需要使用指令alias或其他技巧来重写 URI,以便root正常工作。请参阅这个文件了解详情。

例如:

/usr/local/var/www/index.html
/usr/local/var/www/foo.js
/usr/local/var/www/foo.css

Nginx 配置如下:

location /app {
    alias /usr/local/var/www;
    index index.html;

    if (!-e $request_filename) { rewrite ^ /app/index.html last; }
}

和值应都以 结尾,location或都不以 结尾。避免同时使用和,因为alias//aliastry_files长期问题。 看这种警告关于 的使用if

答案2

否则移动location /app上述内容location // 优先且location /app被忽略。

相关内容