location ^~/images/ { root /mnt/disha; } location ^~/pdf/ { root /mnt/disha; } location ^~/contact/ { root /mnt/disha; } location ^~ /excel { root /mnt/disha; }
¿Cómo puedo combinar estos 4 en 1 ubicación?
Intenté esto:
location ~ ^/(images|pdf|contact|excel)/ { root /mnt/disha; }
Funcionó bien con 4 ubicaciones, luego nginx viene 404 Not Found una vez que se combina con 1.
También probé la ubicación ~* ^/(imágenes|pdf|contacto|excel).
todos los métodos que probé no son válidos, ¿qué debo hacer?
aquí está toda la configuración de mi servidor:
server{ listen 80; listen 443 ssl; server_name erp.xxx.com; index index.html; location ~ ^/(images|pdf|contact|excel)/ { root /mnt/disha; } location ^~/{ root /mnt/disha/erp; } ssl_certificate /etc/xxx/xxx.pem; ssl_certificate_key /etc/xxx/xxx.key; ssl_ciphers ECDHE-RSA-AES128-GCM- SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; }
la solicitud 404 que probé:
wget http://erp.xxx.com/excel/export_outbound_stock_20200321150255.xls
El modificador ^~
hace que una location
de prefijo coincidente tenga prioridad sobre todos los bloques de location
de expresiones regulares.
La location ^~ / { ... }
deshabilita efectivamente cualquier ubicación de expresión regular.
Para cambiar sus cuatro bloques de location
de prefijos en un solo bloque de location
de expresión regular, también debe eliminar el modificador ^~
del bloque de location
final.
Por ejemplo:
root /mnt/disha/erp; location / { } location ~* ^/(images|pdf|contact|excel)/ { root /mnt/disha; }
De hecho, la location /
bloque se puede omitir si está vacío, ya que la instrucción root
se puede colocar en el contexto del bloque del server
.
Vea este documento para más detalles.