nencbskk 2023-11-11 10:26 采纳率: 0%
浏览 12

nginx静态资源地址问题

问题

nginx我的项目放在了nginx/html文件夹中,如

-- nginx
------html
----------项目一
----------项目二

于是我在nginx.conf中写了如下:

        location /项目一  {
            root html;
            index  index.html;
        }

        location /项目二  {
            root html;
            index  index.html index.htm;
        }

能够正确访问到各个项目,但是在访问静态资源的时候却所有项目的静态资源查找目录都是html。

request: "GET /js/app.c930e0fe.js HTTP/2.0", referrer: "网址/项目一"

期待访问的地址应该是html/项目一/js/app.c930e0fe.js,但是实际访问的是html/js/app.c930e0fe.js。

#尝试

尝试1

我尝试写了:

location /项目一 {
    alias html/项目一;
    index index.html;
}

location /项目二 {
    alias html/项目二;
    index index.html index.htm;
}

仍然没有奏效,在html文件夹找静态资源。

尝试二

我尝试通过referrer,在静态资源前面加上项目地址:

map $http_referer $referrer_path {
    "~^我的网址/(.*)/$" /$1;
}

成功获取了referrer_path。但是在静态资源前面加上这个referrer_path,却失败了。

尝试三

        location ~* \.(js|css|woff|jpg|png|woff2)$ {
            if ($request_uri ~ "^/([^?]*)") {
                    set $request_path $1;
                }

            if ($http_referer ~* "^我的网址/([^?]*)") {
                set $referrer_path $1;
            }
            set $resource_path "html/$referrer_path/$request_path";
            try_files =404 /$resource_path;
        }

写下这个代码后仍然到html文件夹寻找静态文件。

  • 写回答

2条回答 默认 最新

  • 创意程序员 2023-11-11 11:41
    关注

    试试以下任一:
    原始方案:同一个root可移到location前面,location后面的目录名以/结尾
    尝试1: alias目录名后面加/

    评论

报告相同问题?

问题事件

  • 修改了问题 11月11日
  • 修改了问题 11月11日
  • 创建了问题 11月11日