每周一坑-小程序文件nginx入口验证

每周一坑-小程序文件nginx入口验证
  话说我们系统要申请个微信小程序,其中有一步需要验证码域名管理所有权(不知道是不是这样叫哈),简单来说就是开发会给一个txt文件过来,然后需要在域名根目录(非二级目录)下访问到这个文件。例如:abc.com下要申请小程序,这个文件叫ljy.txt,要能在浏览器访问到:https://abc.com/ljy.txt 
  平时做的nginx虚拟主机文件,静态资源配置一般直接直接用“root 路径”,后端服务用proxy_pass去转发
 server {
       server_name  xxx;
        。。。
        ## 前端服务
        location ^~ / {
            root /home/{nginx运行用户}/nginx/html/{静态资源目录};
        }
        location ^~ /{静态资源目录} {
            root /home/{nginx运行用户}/nginx/html;
        }
        
        ## 后端服务,例如:tomcat、jar包
        location ^~ /{后端项目名} {
            proxy_pass http://{后端服务器ip}:{后端服务端口};
        }
}

  结合下面架构图来说,

  但因为有些原因:原共享带宽100M入口转发太多服务(其中有个业务还比较重要,响应时间慢容易被人投诉),带宽不足;其次,该服务器2也配置了很多静态资源目录,简单来说就是:

/home/{nginx运行用户}/nginx/html/ 下面有很多前端服务的目录,有些名字还特别像,容易混淆。

相对来说,服务器1就少很多前端服务的目录了,而且固定带宽80M也非常充足。

  所以,在服务器1配置前端静态资源目录,我没有直接用root去匹配,而是用proxy_pass 内网转到另一台nginx服务入口上,架构如下:

 server {
       ## 前端服务
        location ^~ / {
            proxy_pass http://{服务器2的ip}:{服务器2代理的静态资源目录端口};
        }
        location ^~ /{静态资源目录} {
            proxy_pass http://{服务器2的ip}:{服务器2代理的静态资源目录端口};
        }
      。。。
}   

实际上前端静态目录文件是在服务器2上的,服务器1只起到内网转发功能。

   继续。。。

        前端开发丢了文件给我,在办公室里大声叫我:加一,弄好告诉我哈~~~

  通常这种呼叫,会让整个办公室的人都知道这回事,无形中会让干活的人有种精神压力,通常人在这种高压下,无形中也会提高自己短时间解决问题的能力😂😂~~好比我,确实在短时间内定位了问题并解决之,总不能让其他人觉得我专业能力那么菜的(可以发现自己水,但不能让人发现自己水,哈哈哈哈哈哈)

  话说,我一开始以为从服务器1(固定带宽80M)配置的。当时配了这个:

location ~ \.txt$ {
       root html;
}

  然后把那个 txt 文件放到服务器1下:  /home/{nginx运行用户}/nginx/html/{静态资源目录}

  浏览器访问的时候,报错404

  注意,那行URL有一个非常重要的提示信息,直接去服务器2的ip+端口 去找这个txt文件!!

  proxy_pass http://{服务器2的ip}:{服务器2代理的静态资源目录端口}

  刚好这样也提示我,那个  “location~ \.txt”l    配置在服务器1是错误的

  于是我就直接删掉。直接将这个txt文件放到 服务器2 ip + 端口代理的静态资源目录下。

  举个栗子:

(1)服务器1(入口)

server {
...
  server_name abc.com;
....
   location ^~ / {
        proxy_pass  http://10.10.10.123:3308;
}
   location ^~ /ljy {
       proxy_pass  http://10.10.10.123:3308;
}
}

(2)服务器2(ip+端口代理前端静态目录)

server {
        listen 3308;
        server_name 10.10.10.123;
        location / {
             root /home/{普通用户}/data/ljy;
        }
        location  ^~ /ljy {
             root /home/{普通用户}/data;
        }
}

txt 文件放到 服务器2 的  /home/{普通用户}/data/ljy  下即可:

浏览器就能访问啦~~~,不需要加额外的配置匹配 .txt 结尾的文件(location ~ \.txt$ )

 

 

posted @ 2022-07-12 21:01  windysai  阅读(632)  评论(0编辑  收藏  举报