- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 nginx 配置实现代理
这个想法是有一个 http 服务器托管我的网站(我的 SPA)。并在我的 http 服务器上有一个指向另一个 api 的路由。
这是我的nginw配置文件
client_max_body_size 100M;
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html index.htm;
location ^~ /proxyapi/ {
proxy_read_timeout 180s;
proxy_send_timeout 180s;
proxy_pass http://localhost:5000/;
}
location ~* /static/* {
try_files $uri =404;
expires 1y;
access_log off;
add_header Cache-Control "public";
}
# Any route that doesn't have a file extension (e.g. /devices)
location / {
try_files $uri $uri/ /index.html;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
大部分时间都工作正常
当我打电话http://my-nginx-host/proxyapi/search/login时,它有效...
除非登录名中有点
http://my-nginx-host/proxyapi/search/login => 工作正常
http://my-nginx-host/proxyapi/search/log.in => 失败并显示“404 未找到资源”
有什么办法可以让它发挥作用吗?我找不到任何解决方案
最佳答案
匹配 URI 中的任意点可以这样完成:
location ~* \..*$ {
# try_files $uri $uri/ =404;
# ...
}
让我们把正则表达式拆开:
~*
告诉 nginx 进行不区分大小写的正则表达式匹配(~
区分大小写)\.
匹配文字点符号 .
.*
这里的点等于除空格之外的任何符号,星号修改前面的符号以“尽可能多地匹配”$
匹配行尾如果您想匹配“格式错误”的 uri,例如 log.in
编辑:在您的情况下,您必须将此正则表达式放在您的之后location ~*/static/*
因此它不会匹配带点的 uri,如 /static/image.png
。请参阅注释以获取解释。
请记住,此位置 block 将匹配传递的 URI 中的任意位置的任何点。因此它也会匹配 /a.ssets/images/
、/assets/favicon.ico
等 URI。任何非终止位置(没有 ^~
或 =
的位置)即使应该匹配,也不会被使用,如果点正则表达式匹配并且它是第一个匹配的正则表达式位置它优先于其他任何内容。
来自nginx's docs的重要片段关于位置偏好的匹配:
Regular expressions are specified with the preceding “~*” modifier (for case-insensitive matching), or the “~” modifier (for case-sensitive matching). To find location matching a given request, nginx first checks locations defined using the prefix strings (prefix locations). Among them, the location with the longest matching prefix is selected and remembered. Then regular expressions are checked, in the order of their appearance in the configuration file. The search of regular expressions terminates on the first match, and the corresponding configuration is used. If no match with a regular expression is found then the configuration of the prefix location remembered earlier is used.
关于nginx - 如何将任何包含点的路径与 nginx 匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56329864/
我是一名优秀的程序员,十分优秀!