[已解决]多应用 - 多域名配置失败

凌晨三点半的卢本伟

多应用域名绑定插件,

按照文档配置api域名可以正常访问,但是其他域名不可以

composer 多应用域名绑定插件

开启插件

截图

代码

### nginx 第一次尝试
location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      if (!-f $request_filename){
          rewrite ^/(.*)$ /api/$1 break;
          rewrite ^/(.*)$ /backend/$1 break;
          proxy_pass http://webman;
       }
}

api请求正常,然后admin的域名请求也是api,就查了 rewrite 用法。

第二次尝试 直接报错了

location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      if (!-f $request_filename){

        if ($host = 'api域名') {
            rewrite ^/(.*)$ /api/$1 last;
        }

        if ($host = 'admin域名') {
            rewrite ^/(.*)$ /backend/$1 last;
        }

        proxy_pass http://webman;
      }
  }

第三次尝试 访问不报错,一片空白

后端域名请求Test控制器下的test方法,用 $request->uri() 获取 路径为 /test 正确的路径应该为 /backend/test/

location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      if (!-f $request_filename){
        proxy_pass http://webman;
        break;
      }

      if ($host = 'api域名') {
        rewrite ^/(.*)$ /api/$1 last;
      }

      if ($host = 'admin域名') {
        rewrite ^/(.*)$ /backend/$1 last;
      }
  }

环境为
nginx 1.22
php 7.4

对nginx还是不熟悉,有没有大佬帮忙指点一下

第四次尝试 看了一篇多应用的配置文档

https://www.workerman.net/q/7922 参考文章里面写的伪静态写法,再把nginx重置原始模样,然后就正常访问了。

#nginx
location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    if (!-f $request_filename){
        proxy_pass http://webman;
    }
}

需要改的地方是伪静态

if (-f $request_filename){
    break;
}
if ($host = 'api域名') {
  rewrite ^/(.*)$ /api/$1 last;
}
if ($host = 'admin-api域名') {
  rewrite ^/(.*)$ /backend/$1 last;
}

//其他域名入口也照这个仿写
//if ($host = '商家端域名') {
  //rewrite ^/(.*)$ /backend/$1 last;
//}

重启 webman

访问 api域名/login 正常 api接口下的Login/login 方法

截图

访问 admin域名/test 正常

截图

799 1 1
1个回答

six

论坛搜的 https://www.workerman.net/q/7922 希望有帮助

年代过于久远,无法发表回答
🔝