mindoc-org / mindoc

Golang实现的基于beego框架的接口在线文档管理系统
https://mindoc.com.cn/docs/mindochelp
Apache License 2.0
7.35k stars 1.91k forks source link

使用Nginx将mindoc重写到域名的二级目录时,所有链接都无法正常打开 #120

Closed jim-kirisame closed 6 years ago

jim-kirisame commented 7 years ago

现有的静态文件的加载路径都是根目录的static文件夹,如果将mindoc放入二级目录,则无法正常加载静态资源。希望可以添加相关配置以解决此问题。

lifei6671 commented 7 years ago

可以自定义工作目录: https://github.com/lifei6671/mindoc/wiki/MinDoc-%E4%B8%AD%E7%9A%84%E5%91%BD%E4%BB%A4

jim-kirisame commented 7 years ago

是我描述的不清楚了。现在我希望通过某个域名的二级目录来访问mindoc,类似于http://localhost/mindoc/,但是他的静态文件加载目录还是在http://localhost/static/,而不是希望的http://localhost/mindoc/static/。

lifei6671 commented 7 years ago

这个需要用nginx做代理,因为MinDoc是自寄宿的,不需要用web容器承载,所以不用代理无法实现你说的虚拟目录。

jim-kirisame commented 7 years ago

是的,目前用的就是nginx的代理,但是我并不能把所有指向static目录的东西都重写到mindoc/static目录吧。建议使用类似于gitea的那种方案,在配置文件中指定目录。

jim-kirisame commented 7 years ago

mindoc现在在模板里面使用的是类似于这样的路径

<link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">

而gitea使用的是类似与这样的路径

<link rel="stylesheet" href="{{AppSubUrl}}/assets/octicons-4.3.0/octicons.min.css">

lifei6671 commented 7 years ago

代码里面大部分页面已经支持cdnjs和cdncss的路径设置,只有少部分暂时不支持。后续版本都用这个函数生成路径吧。

jim-kirisame commented 7 years ago

还是无法解决现有问题。 几乎所有的链接都是绝对链接,点进去之后就是404。 例子:对于 http://localhost/mindoc/ 首页来说,登录按钮的链接被设置成了 http://localhost/login ,而不是希望的 http://localhost/mindoc/login

期望能够解决这个问题。

lifei6671 commented 7 years ago

目前程序本身无法实现。只能尝试用nginx做反向代理实现吧。

Darren-wh commented 7 years ago

hello 想问下你们nginx 代理 作者说的 location ~ .*.(ttf|woff2|eot|otf|map|swf|svg|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {

#此处将路径执行 MinDoc 的跟目录
root "/var/go/godoc";
expires 30m;

}

此处将路径执行 MinDoc 的跟目录 这个是指我的 mindoc安装目录吗? 是解压安装的mindoc目录?

jim-kirisame commented 7 years ago

@Darren-wh 是的,Mindoc的根目录

Darren-wh commented 7 years ago

@jiangming1399 你好,意思就是比如我mindoc 解压在 /data/mindoc 那这个目录location ~ .*.(ttf|woff2|eot|otf|map|swf|svg|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {

此处将路径执行 MinDoc 的跟目录

root "/var/go/godoc"; expires 30m; }

那么这里 root 就设置为/data/mindoc ? 是mindoc的安装目录是吧。? 那么我的nginx代理必须要和这个mindoc安装机器是一台机器了?

jim-kirisame commented 7 years ago

@Darren-wh 不一定要一台机,你可以做个反代

Darren-wh commented 7 years ago

@jiangming1399 但是这步是必须要设置的啊 ttf|woff2|eot|otf|map|swf|svg|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {

此处将路径执行 MinDoc 的跟目录

root "/var/go/godoc"; expires 30m;

如果我的nginx机器肯定不会装mindoc,除非我在mindoc 上装个nginx部署这个,然后再到另外一台机器做个反向代理映射到mindoc机器的 nginx上?

jim-kirisame commented 7 years ago

@Darren-wh 是的

ywz978020607 commented 10 months ago

还是无法解决现有问题。 几乎所有的链接都是绝对链接,点进去之后就是404。 例子:对于 http://localhost/mindoc/ 首页来说,登录按钮的链接被设置成了 http://localhost/login ,而不是希望的 http://localhost/mindoc/login

期望能够解决这个问题。

已经解决了,conf配置修改二级路径一行代码即可,我反代到nginx下二级目录没问题~

pcloves commented 6 months ago

conf配置修改二级路径一行代码即可,我反代到nginx下二

请问要如何配置呢?我现在这么配置,静态资源都是不对的

        #wiki网站配置,来自:https://mindoc.com.cn/docs/mindochelp/mindoc-nginx
        location ^~/wiki/ {
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header Host            $http_host;
                proxy_set_header   X-Forwarded-Proto $scheme;
                #此处配置 MinDoc 程序的地址和端口号
                proxy_pass http://127.0.0.1:8181/;
                #proxy_redirect $scheme://$host:$server_port/ /wiki/;
        }