请问如何把webman-admin通过nginx反向代理到站点子目录下

cqqjj1029

问题描述

我用webman新创建的项目

composer create-project workerman/webman

然后再安装webman-admin

composer require -W webman/admin

然后访问带端口号的地址:

http://domain:55602/app/admin

一切都是正常的。

但是我的服务器、域名、端口都有限制,所以我不能在url根路径下访问webman-admin

于是我在nginx中做了代理:

# 将/admin的请求转到127.0.0.1:55602
location /admin/ {
    proxy_pass http://127.0.0.1:55602/;
    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;
}

然后我启动服务后,我通过nginx代理访问网站:

http://domain/admin/app/admin

结果发现虽然install页面打开了,但是所有静态资源(样式、脚本、图片)都没有加载出来,用F12看一下,以pear.css为例,浏览器加载资源的uri是这个:

http://domain/app/admin/component/pear/css/pear.css

其实我们期望它加载资源的路径是:http://domain/admin/app/admin/component/pear/css/pear.css

我看了plugin/admin/app/view中的页面源代码,它加载资源的路径是这样写的

<link rel="stylesheet" href="/app/admin/component/pear/css/pear.css" />

如果我手动把它改成<link rel="stylesheet" href="../app/admin/component/pear/css/pear.css" />

那么无论我访问 http://domain/admin/app/admin 还是 http://domain/admin/app/admin 都是正常的,可是我知道这种改法是不科学的,工作量也很大。

所以请问有没有更好的方案,让webman-admin可以运行在站点的非根路径上?

为此你搜索到了哪些方案及不适用的原因

搜索过整个社区,没有找到具体的解决方案。

459 5 1
5个回答

13sai

IDE 批量修改,其实工作量不大

  • 暂无评论
释永战

为什么不直接/app/admin走反向代理。

  • 暂无评论
君子如玉

楼主找到解决方案了吗

  • 暂无评论
efnic
  • efnic 5天前

    rewrite ^/(.*)$ /app/$1 break;

efnic

/app/admin的请求转到127.0.0.1:55602

location /app/admin {
    proxy_pass http://127.0.0.1:55602/;
    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;
}
  • 暂无评论
×
🔝