nginx位置首选项中的错误行为

时间:2018-01-02 14:00:27

标签: nginx

我设置了一个nginx服务器来提供静态文件,还有一个应用服务器来为其余文件提供服务。

必需的行为:

  1. 如果请求以js | css | png | jpeg结尾,则在本地提供
  2. 如果请求以myapp / fonts开头,则在本地提供
  3. 否则发送到后端服务器

    location ~* ^/myapp-admin/(.*\.(css|js|gif|jpe?g|png))$ {
            expires 7d;
            autoindex on;
            alias {{ nginx_myapp_admin_staticfiles }};
    }
    
    location ~* ^/myapp-admin/fonts/ {
            expires 7d;
            autoindex on;
            alias {{ nginx_myapp_admin_staticfiles }};
    }
    
    location ~* ^/myapp/(.*\.(css|js|gif|jpe?g|png))$ {
            expires 7d;
            autoindex on;
            alias {{ nginx_myapp_staticfiles }};
    }
    
    location ~* ^/myapp/fonts/ {
            expires 7d;
            autoindex on;
            alias {{ nginx_myapp_staticfiles }};
    }
    
    
    location / {
        proxy_pass {{ myapp_app_backend_url }};
    }
    
  4. 但是,目前,所有请求都被路由到最后一个块并最终到达我的应用服务器。

1 个答案:

答案 0 :(得分:0)

你的正则表达式似乎错了

server {
  listen 8081;
  location ~(.*)(endwithjs|endwithcss)$ {
     return 301 https://www.perdu.com;
  }
  location ~^\/(startwithjs|startwithcss){
     return 301 https://www.google.fr;
  }

}

Nginx将按以下方式处理请求:

http://localhost:8081/abc/abc/endwithjs => perdu.com

http://localhost:8081/startwithcss/Sdfsdf/sdf => google.fr