nginx设置通用访问后缀

需求A描述:比如说服务器的访问路径中含有(.json,.axp,.php), 我们访问可以在nginx中设置拦截规则,定义正则表达式进行拦截,转发到对应的服务器上去。

服务器接口访问路径:

@GetMapping("/isCollection.json")
public String getString(){
   return "OK";

浏览器访问方式:  

http://47.102.42.198:8888/isCollection.json

nginx配置方式:

location ~* \.(json)$ {
   proxy_pass http://localhost:8081;   #......
   proxy_connect_timeout 3000s;
   proxy_send_timeout 3000s;
   proxy_read_timeout 3000s;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header Host $host:$server_port;
   client_max_body_size    100m;

需求B描述:比如说访问路径中含有(.json,.axp,.php),而服务器中并不存在后缀,我们访问可以在nginx中配置截取后缀,转发到对应的服务器上去。

服务器接口路径: 

@GetMapping("/risk/isCollection")
public String getString(){
   return "OK";

浏览器访问方式: 

http://47.102.42.198:8888/isCollection.json

nginx配置方式:

location / {
   rewrite '^(.*)\.json$' /risk/$1 last;
location /risk/ {
   proxy_pass http://localhost:8081;   #服务器地址|域名
   proxy_connect_timeout 3000s;
   proxy_send_timeout 3000s;
   proxy_read_timeout 3000s;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header Host $host:$server_port;
   client_max_body_size 100m;

Location 的匹配规则详解 

句法:location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
默认:-
内容:server, location

=:开头表示精确匹配

^~:开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。

~:开头表示区分大小写的正则匹配

~*:开头表示不区分大小写的正则匹配

!~!~*:分别为区分大小写不匹配及不区分大小写不匹配 的正则

/:通用匹配,任何请求都会匹配到。

多个location配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):

首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

例子,有如下匹配规则:

location = /  {
    [ configuration A ]
location = /login {
    [ configuration B ]
location ^~ /static/ {
    [ configuration C ]
location ~ \.(gif|jpg|png|js|css)$ {
    [ configuration D ]
location ~* \.png$ {
    [ configuration E ]
location !~ \.xhtml$ {
    [ configuration F ]
location !~* \.xhtml$ {
    [ configuration G ]
location / {
    [ configuration H ]

那么产生的效果如下:

  • 访问根目录/, 比如 http://localhost/  将匹配 [configuration A]
  • 访问 http://localhost/login 将匹配[configuration B],http://localhost/register 则匹配 [configuration H]
  • 访问 http://localhost/static/font.html 将匹配[configuration C]
  • 访问 http://localhost/font.gif, http://localhost/font.jpg 将匹配[configuration D][configuration E],但是[configuration D]顺序优先,[configuration E]起作用, 而 http://localhost/static/c.png 则优先匹配到 [configuration C]
  • 访问 http://localhost/font.PNG 则匹配[configuration E], 而不会匹配[configuration D],因为[configuration E]不区分大小写。
  • 访问 http://localhost/font.xhtml 不会匹配[configuration F][configuration G],http://localhost/font.XHTML不会匹配[configuration G],因为不区分大小写。[configuration F][configuration G]属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。
  • 访问 http://localhost/category/id/1234则最终匹配到[configuration H],因为以上规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。

官网文档:http://nginx.org/en/docs/http/ngx_http_core_module.html#location

nginx设置通用访问后缀需求A描述:比如说服务器的访问路径中含有(.json,.axp,.php), 我们访问可以在nginx中设置拦截规则,定义正则表达式进行拦截,转发到对应的服务器上去。服务器接口访问路径:@GetMapping("/isCollection.json")public String getString(){ return "OK";}浏览器访问方式:http://ip:port/isCollection.jsonnginx配置方式:lo..
显示随机首页模块(Random Index) 一般情况下,一个站点默认首页都是定义好的index.html、index.shtml、index.php等等,如果想站点下有很多页面想随机展示给用户浏览,那得程序上实现,显得尤为麻烦,如果你安装了nginx,那么使用nginx的random index即可达成这个功能,凡是以/结尾的请求,都会随机展示当前目录下的文件作为首页. random index介绍 ngx_http_random_index_module模块处理以’/’为后缀的请求,并且在当前目录下随机抽取一个页面作为首页.这个模块将在ngx_http_index_module模块之前执行
default_type 'text/html'; charset utf-8; #匹配以IFCSI开头的后缀为.xhtml的url, $1为括号里面的内容,转到abc/$1,abc可任意替换,主要满足下面匹配 location / { rewrite '^/IFCSI/(.*)\.xhtm... 头部信息:包括姓名、联系方式(电话号码、电子邮件等)、地址等个人基本信息。 求职目标(可选):简短描述您的求职意向和目标。 教育背景:列出您的教育经历,包括学校名称、所学专业、就读时间等。 工作经验:按时间顺序列出您的工作经历,包括公司名称、职位、工作时间、工作职责和成就等。 技能和能力:列出您的专业技能、语言能力、计算机技能等与职位相关的能力。 实习经验/项目经验(可选):如果您有相关实习或项目经验,可以列出相关信息。 获奖和荣誉(可选):列出您在学术、工作或其他领域获得的奖项和荣誉。 自我评价(可选):简要描述您的个人特点、能力和职业目标。 兴趣爱好(可选):列出您的兴趣爱好,展示您的多样性和个人素质。 参考人(可选):如果您有可提供推荐的人员,可以在简历中提供其联系信息。 简历内容模板: 联系方式: 求职目标: # 配置处理请求后缀为 .html 的请求 if ($request_uri ~ ^/(.*)\.html$) { try_files $uri $uri.html =404; # 其他配置... # 其他配置... 在上面的配置中,我们使用了`location`指令来匹配以 `.html` 结尾的请求。如果匹配成功,`try_files`指令将尝试寻找对应的文件,如果找不到,则返回404错误。你可以根据自己的需求修改后缀和处理方式。 请注意,使用`if`指令可能会对性能产生一定影响。如果你有更多的后缀需要处理,或者需要更复杂的规则,你可以考虑使用正则表达式或其他方式来匹配和处理请求后缀