收藏
回答

扫普通二维码打开小程序,但是打开的仍是web网页?

我的服务器是web和小程序用的同一个,然后二维码校验文件是放在nginx下的,也就是说通过域名访问 nginx代理找到文件校验,但是现在校验的地址 就是二维码的访问链接,那么我扫二维码时 也会被nginx代理 有没有大佬开导一下,要怎么做,

回答关注问题邀请回答
收藏

2 个回答

  • Tyler
    Tyler
    02-13

    你可以在一个nginx服务器上配两个域名,一个做web服务,一个做小程序服务。

    这样校验地址会分开,而且小程序二维码的路径也会分开,就没有你的这个困境了。

    02-13
    有用 1
    回复 5
    • 凌 新 文
      凌 新 文
      02-13
      有道理,这样我小程序直接访问https://域名/app?id=1 就不会有解析到web了
      02-13
      回复
    • 凌 新 文
      凌 新 文
      02-13
      大佬一个域名的情况下这种情况有解吗
      02-13
      回复
    • Tyler
      Tyler
      02-13回复凌 新 文
      可以把web服务的不配ssl,把小程序配ssl,这样文件验证和简单二维码路径都被移到配了ssl的服务上。
      我看了下你贴的配置,如果要采用我上面的方案,需要取消80端口的重定向,把后端代理、静态资源啥的,配到80的server里。
      02-13
      1
      回复
    • 凌 新 文
      凌 新 文
      02-13回复Tyler
      感谢大佬
      02-13
      回复
    • 凌 新 文
      凌 新 文
      02-13回复Tyler
      一个域名的情况下要怎么做呢
      02-13
      回复
  • 风清雾散云开见日出
    风清雾散云开见日出
    02-13

    校验文件要放在你的nginx配置的根目录下,访问校验文件会带有校验文件名称.txt。难道你的二维码链接就是校验文件。

    02-13
    有用
    回复 16
    • 凌 新 文
      凌 新 文
      02-13
      例如我的nginx根目录是   root /opt/nginx/html/dist;
      下面是这一截的配置


          location / {
                  root /opt/nginx/html/dist;
                  index index.html index.htm;
                  try_files $uri $uri/ /index.html;
              }


      二维码规则是klttq.top/app那么我就会把校验文件放在/opt/nginx/html/dist目录下,此时是没问题的,但是测试链接必须klttq.top/app?id=1这样才能符合规则,但是我这样会被nginx拦截跳转到nginx location 配置的index页面(就是上面的配置)
      02-13
      回复
    • 风清雾散云开见日出
      风清雾散云开见日出
      02-13回复凌 新 文
      你访问的是klttq.top/app,怎么会跳转到klttq.top这个?
      02-13
      回复
    • 风清雾散云开见日出
      风清雾散云开见日出
      02-13回复凌 新 文
      除非是你的nginx其他路径访问设置了拒绝访问,才会跳转到默认location路径。
      02-13
      回复
    • 风清雾散云开见日出
      风清雾散云开见日出
      02-13回复凌 新 文
      并且你的root根目录配置都可以放到location外面。更与你的这个二维码规则无关了。
      02-13
      回复
    • 凌 新 文
      凌 新 文
      02-13回复风清雾散云开见日出
      worker_processes 1;
      error_log /opt/nginx/logs/error.log warn;
      pid /opt/nginx/logs/nginx.pid;
      events {
          worker_connections 1024;
      }
      http {
          include /opt/nginx/conf/mime.types;
          default_type application/octet-stream;
          log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                            '$status $body_bytes_sent "$http_referer" '
                            '"$http_user_agent" "$http_x_forwarded_for"';
          access_log /opt/nginx/logs/access.log main;
          sendfile on;
          keepalive_timeout 65;
          # HTTP server
          server {
              listen 80;
              server_name klttq.top;
              # 重定向到HTTPS
              location / {
                  return 301 https://$host$request_uri;
              }
          }
          # HTTPS server
          server {
              listen 443 ssl;
              server_name klttq.top;
              ssl_certificate /opt/nginx/key/fullchain.pem; # 指定服务器证书路径
              ssl_certificate_key /opt/nginx/key/private.key; # 指定私钥证书路径
              ssl_session_timeout 5m;
              ssl_protocols TLSv1.2 TLSv1.3; # 指定SSL服务器端支持的协议版本
              ssl_ciphers HIGH:!aNULL:!MD5; # 指定加密算法
              ssl_prefer_server_ciphers on; # 在使用SSLv3和TLS协议时指定服务器的加密算法要优先于客户端的加密算法
              location / {
                  root /opt/nginx/html/dist;
                  index index.html index.htm;
                  try_files $uri $uri/ /index.html;
              }
              # 配置静态文件访问
              location /app-static/ {
                  alias /opt/nginx/html/static/;
                  autoindex on;
                  try_files $uri $uri/ =404;
              }
              # 后端代理
              location /prod-api/ {
                  proxy_pass http://117.72.21.33:8080/;
                  proxy_set_header Host $host;
                  proxy_set_header X-Real-IP $remote_addr;
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                  proxy_set_header X-Forwarded-Proto $scheme;
              }
              error_page 500 502 503 504 /50x.html;
              location = /50x.html {
                  root /opt/nginx/html;
              }
          }
      }
      02-13
      回复
    查看更多(11)
登录 后发表内容