Nginx 位置
Nginx locations
我正在 React 中开发一个多租户应用程序,一些客户想要将 .html 文件上传到项目的根目录以使用 google 控制台和类似的东西。我不希望所有这些文件都与应用程序代码混合,所以除了以下代码:
location / {
try_files $ uri /index.html = 404;
}
我想在 NGINX 中添加一个位置块,它允许我将以 / 开头的任何其他 .html 文件转移到另一个文件夹,不包括像 /static/example.[=26= 这样的情况].
示例:
/ -> React default
/static/*.html -> React default
/*.html -> Derive to new folder
我将不胜感激这方面的任何帮助。
我试过这样的东西...
location /*.html {
root /extras_folder;
}
location / {
root /project_folder;
try_files $uri /index.html =404;
}
但不起作用
这个呢?
server {
listen 80;
root /project_folder;
location / {
try_files $uri @extras_folder;
}
location @extras_folder {
root /extras_folder;
try_files $uri @index_html;
}
location @index_html {
try_files /index.html =404;
}
}
这首先在 /project_folder
中查找,然后在 /extras_folder
中查找,如果仍未找到文件,则最终提供 /project_folder/index.html
(如果该文件不存在,则为 404)。
在这种情况下,您会将上传的文件放入 /extras_folder
。
这符合您描述的规则:
location ^~ /index.html {
root /project_folder;
try_files $uri /index.html =404;
}
location ~ ^/[^/]+\.html {
root /extras_folder;
try_files $uri /index.html =404;
}
location / {
root /project_folder;
try_files $uri /index.html =404;
}
- 第二个块是仅在根路径中的 *.html 上的正则表达式匹配
- 第三块用于所有其他路径
- 第一个块是覆盖 / 的边缘情况 /index.html - 否则正则表达式规则总是优先于路径位置块
我正在 React 中开发一个多租户应用程序,一些客户想要将 .html 文件上传到项目的根目录以使用 google 控制台和类似的东西。我不希望所有这些文件都与应用程序代码混合,所以除了以下代码:
location / {
try_files $ uri /index.html = 404;
}
我想在 NGINX 中添加一个位置块,它允许我将以 / 开头的任何其他 .html 文件转移到另一个文件夹,不包括像 /static/example.[=26= 这样的情况].
示例:
/ -> React default
/static/*.html -> React default
/*.html -> Derive to new folder
我将不胜感激这方面的任何帮助。
我试过这样的东西...
location /*.html {
root /extras_folder;
}
location / {
root /project_folder;
try_files $uri /index.html =404;
}
但不起作用
这个呢?
server {
listen 80;
root /project_folder;
location / {
try_files $uri @extras_folder;
}
location @extras_folder {
root /extras_folder;
try_files $uri @index_html;
}
location @index_html {
try_files /index.html =404;
}
}
这首先在 /project_folder
中查找,然后在 /extras_folder
中查找,如果仍未找到文件,则最终提供 /project_folder/index.html
(如果该文件不存在,则为 404)。
在这种情况下,您会将上传的文件放入 /extras_folder
。
这符合您描述的规则:
location ^~ /index.html {
root /project_folder;
try_files $uri /index.html =404;
}
location ~ ^/[^/]+\.html {
root /extras_folder;
try_files $uri /index.html =404;
}
location / {
root /project_folder;
try_files $uri /index.html =404;
}
- 第二个块是仅在根路径中的 *.html 上的正则表达式匹配
- 第三块用于所有其他路径
- 第一个块是覆盖 / 的边缘情况 /index.html - 否则正则表达式规则总是优先于路径位置块