nginx try_files 图片资源

 

 

 

 

路由正则

实践

 

 

 React 单页应用 虚拟路由

    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;
        client_max_body_size 8M;
        client_body_buffer_size 8M;
    }
 
接口服务

    location /gateway {
        proxy_pass http://127.0.0.1:12345/gateway;
        client_max_body_size 8M;
        client_body_buffer_size 8M;
    }
 
图片类文件
 
匹配指定目录下任意或任意子目录下的静态文件
1)
url host/static/....png

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 file ... uri;
try_files file ... =code;
Default:
Context: serverlocation

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
}

 

posted @ 2021-06-17 20:36  papering  阅读(118)  评论(0编辑  收藏  举报