nginx try_files 图片资源
路由正则
实践
React 单页应用 虚拟路由
location ~ .static.*\.(gif|jpg|jpeg|png|pdf|txt|doc|docx|xls|xlsx|ppt|pptx)$ {
root /var/www/test/;
client_max_body_size 8M;
client_body_buffer_size 8M;
}
url host/....png
2)
location ~ .*\.(gif|jpg|jpeg|png|pdf|txt|doc|docx|xls|xlsx|ppt|pptx)$ {
root /var/www/html;
client_max_body_size 8M;
client_body_buffer_size 8M;
}
1)、2)的根目录不同
1)
article?Id=123
---》
/#article?Id=123
location / {
try_files $uri /#$uri /index.html;
}
vue 去除/#/
React虚拟路由
2)
location ~ \.csv$ {
root /var/www/html;
}
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;^_
try_files $uri $uri/ /index.html;
}
Module ngx_http_core_module http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files
| Syntax: | try_files try_files |
|---|---|
| Default: | — |
| Context: | server, location |
Checks the existence of files in the specified order and uses the first found file for request processing; the processing is performed in the current context. The path to a file is constructed from the file parameter according to the root and alias directives. It is possible to check directory’s existence by specifying a slash at the end of a name, e.g. “$uri/”. If none of the files were found, an internal redirect to the uri specified in the last parameter is made. For example:
location /images/ {
try_files $uri /images/default.gif;
}
location = /images/default.gif {
expires 30s;
}
The last parameter can also point to a named location, as shown in examples below. Starting from version 0.7.51, the last parameter can also be a code:
location / {
try_files $uri $uri/index.html $uri.html =404;
}
Example in proxying Mongrel:
location / {
try_files /system/maintenance.html
$uri $uri/index.html $uri.html
@mongrel;
}
location @mongrel {
proxy_pass http://mongrel;
}
Example for Drupal/FastCGI:
location / {
try_files $uri $uri/ @drupal;
}
location ~ \.php$ {
try_files $uri @drupal;
fastcgi_pass ...;
fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param QUERY_STRING $args;
... other fastcgi_param's
}
location @drupal {
fastcgi_pass ...;
fastcgi_param SCRIPT_FILENAME /path/to/index.php;
fastcgi_param SCRIPT_NAME /index.php;
fastcgi_param QUERY_STRING q=$uri&$args;
... other fastcgi_param's
}
In the following example,
location / {
try_files $uri $uri/ @drupal;
}
the try_files directive is equivalent to
location / {
error_page 404 = @drupal;
log_not_found off;
}
And here,
location ~ \.php$ {
try_files $uri @drupal;
fastcgi_pass ...;
fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
...
}
try_files checks the existence of the PHP file before passing the request to the FastCGI server.
Example for Wordpress and Joomla:
location / {
try_files $uri $uri/ @wordpress;
}
location ~ \.php$ {
try_files $uri @wordpress;
fastcgi_pass ...;
fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
... other fastcgi_param's
}
location @wordpress {
fastcgi_pass ...;
fastcgi_param SCRIPT_FILENAME /path/to/index.php;
... other fastcgi_param's
}

浙公网安备 33010602011771号