Nginx 不同位置的不同目录中的Nignx try文件

Nginx 不同位置的不同目录中的Nignx try文件,nginx,configuration,fastcgi,Nginx,Configuration,Fastcgi,我有一个使用FastCGI的网络应用程序。此应用程序部署为不同的“站点”。我有一个应用程序的通用nginx配置,然后,我为每个站点包括upstram和locations文件。每个站点都需要一些.js和.css文件。现在,我已经通过常规配置文件的根目录设置了这些。我现在的要求是,我希望能够为不同的网站使用不同的.css和.js。因此,文件的查找应首先从站点/位置级别开始,如果未找到,则在general根目录中搜索 通用nginx conf文件是: # Change this directo

我有一个使用FastCGI的网络应用程序。此应用程序部署为不同的“站点”。我有一个应用程序的通用nginx配置,然后,我为每个站点包括upstram和locations文件。每个站点都需要一些.js和.css文件。现在,我已经通过常规配置文件的
根目录设置了这些。我现在的要求是,我希望能够为不同的网站使用不同的.css和.js。因此,文件的查找应首先从站点/位置级别开始,如果未找到,则在general
根目录中搜索

通用nginx conf文件是:

    # Change this directory depending on the server
    include /etc/nginx/conf.d/app/upstreams/*.conf;


    server
      {
        server_name 24.39.17.76;

        root /var/www/app/files/;

        listen       443;
        ssl                  on;
        ssl_certificate   /etc/nginx/conf.d/app/ssl/new/app.pem;
        ssl_certificate_key    /etc/nginx/conf.d/app/ssl/new/app.com.key;

        location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|svg|woff|ttf)$ {

            access_log off; # this is because otherwise, with jail2ban the user may be banned
            # add_header Access-Control-Allow-Origin "*";
            expires max;
            add_header Cache-Control "public, must-revalidate, proxy-revalidate";
            add_header Pragma public;

        }

        # Change this directory depending on the server
        include /etc/nginx/conf.d/app/locations/*.conf;

      }
注意我包含所有conf和upstreams文件的行

然后,一个特定站点有一个上游文件,如:

    upstream siteX
    {
    server localhost:9021;
    server localhost:9022;
    server localhost:9023;
    }
还有一个像这样的位置文件:

location ~ ^/siteX/reps {

        access_log  /var/log/nginx/app/siteX_reps_access.log;
        error_log  /var/log/nginx/app/siteX_reps_error info;
            if ($arg_service = "true") {
                    rewrite  ^/(.*)$ /service/$1 last;
            }
        rewrite ^/siteX/(.*)$ /$1 break;
        try_files $uri @fastcgiSiteX;

    }


    location @fastcgiSiteX {

        include fastcgi_params;
        fastcgi_param REQUEST_URI $uri?$args;
        fastcgi_pass fastcgiSiteX;
        fastcgi_next_upstream error invalid_header http_500;

    }
我的网页中包含css和js的html如下所示:

 <script type="text/javascript" src="/JQDevelopmentLibrary/jQuery.js"></script>
 <link rel="stylesheet" type="text/css" href="/TBSDevelopmentLibrary/css/bootstrap.css"/>
然后,我将所有文件夹和文件放在$document\u root/siteX/webfiles中,也就是说,
/var/www/app/files/siteX/webfiles/
。我认为这个解决方案应该有效,但没有

有什么想法吗


提前感谢,

这是一种黑客行为,但它是可以做到的

location ~ ^/siteX/reps {

        access_log  /var/log/nginx/app/siteX_reps_access.log;
        error_log  /var/log/nginx/app/siteX_reps_error info;
            if ($arg_service = "true") {
                    rewrite  ^/(.*)$ /service/$1 last;
            }
        rewrite ^/siteX/(.*)$ /$1 break;
        try_files $uri @hack;

    }

     location @hack {
     root  /var/www/siteX/files;
     try_files $uri $uri/ @fastcgiSiteX;
     }

    location @fastcgiSiteX {

        include fastcgi_params;
        fastcgi_param REQUEST_URI $uri?$args;
        fastcgi_pass fastcgiSiteX;
        fastcgi_next_upstream error invalid_header http_500;

    }

你好我正在尝试这个解决方案,但我有一个问题<代码>try_files$uri@hack
将在$uri上尝试文件,这将在我的案例中找到。然后它将返回到@hack。我需要另一种方法,首先尝试使用“/var/www/siteX/files”创建文件,如果找不到,则返回到“/var/www/app/files/”。有什么想法吗?我如何调整您的解决方案?谢谢
  try_files /siteX/webfiles$uri $uri @fastcgiSiteX;
location ~ ^/siteX/reps {

        access_log  /var/log/nginx/app/siteX_reps_access.log;
        error_log  /var/log/nginx/app/siteX_reps_error info;
            if ($arg_service = "true") {
                    rewrite  ^/(.*)$ /service/$1 last;
            }
        rewrite ^/siteX/(.*)$ /$1 break;
        try_files $uri @hack;

    }

     location @hack {
     root  /var/www/siteX/files;
     try_files $uri $uri/ @fastcgiSiteX;
     }

    location @fastcgiSiteX {

        include fastcgi_params;
        fastcgi_param REQUEST_URI $uri?$args;
        fastcgi_pass fastcgiSiteX;
        fastcgi_next_upstream error invalid_header http_500;

    }