• 每周一坑小程序文件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$ )

     

  • 相关阅读:
    docker 常用
    vue-cli 的静态资源
    ubuntu 恢复模式
    virtualbox
    cmake 使用技巧
    VLC播放pcm
    Ice-Lite 理解
    webrtc ice流程
    Mediasoup_Demo信令过程, client and server
    Mediasoup
  • 原文地址:https://www.cnblogs.com/windysai/p/16471390.html
Copyright © 2020-2023  润新知