2017-10-21 41 views
0

J'essaie de définir une zone limite_req différent pour le contenu statique.Nginx recherche de fin d'emplacement correspondant à regexp

location ^~ /img { 
    limit_req zone=static burst=60 nodelay; 
} 
location ^~ /logos { 
    limit_req zone=static burst=60 nodelay; 
} 
location ^~ /js { 
    limit_req zone=static burst=60 nodelay; 
} 
location ^~ /plugin { 
    limit_req zone=static burst=60 nodelay; 
} 

location/{ 
    limit_req zone=protected burst=5 nodelay; 
} 

Cela fonctionne très bien, mais je veux compresser ces endroits dans une expression régulière:

location ^~ /(img|logos|js|plugin) { 
    limit_req zone=static burst=60 nodelay; 
} 

essayé, mais il ne fonctionne pas. Fonctionne uniquement avec ~ sans ^, qui correspondra alors à l'emplacement /, en réglant la zone sur protected. Est-ce que^~ ne travaille qu'avec des littéraux? Y a-t-il un autre moyen d'y parvenir d'une manière propre?

Répondre

0

selon nginx documentation

L'emplacement suivant est défini avant celui avec le proxy_pass et il correspond à la demande des fichiers js et css en statique. Ce bloc de localisation est utilisé pour les différentes extensions que vous souhaitez autoriser sur votre site.

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { 
    limit_req zone=static burst=60 nodelay; 
    log_not_found off; 
    } 

Ou, vous pouvez utiliser cela, je pense que cela fonctionne bien

location ~ ^/(img|logos|js|plugin)/ { 
    root /project_root_path; 
    limit_req zone=static burst=60 nodelay; 
}