gpt4 book ai didi

mercurial - hg 中的断开链接通过 proxy_pass 在 nginx 后面服务

转载 作者:行者123 更新时间:2023-12-04 06:05:15 26 4
gpt4 key购买 nike

我有一个简单的 Ubuntu 10.10、Nginx、Mercurial、PHP 和 MySQL 堆栈。

当前文件结构:

/opt/nginx/html - document root for nginx (where my website files are)
/opt/nginx/html/.hg - repository data
/usr/share/mercurial/ - where the templates/static folder is

我正在运行 hg -serve,它托管在 localhost:8000。
在此之后,我对 mercurial 如何与其资源相关联没有清楚的了解。

我为所需的入口点设置了以下 Nginx 配置:
location /mercurial/ {
auth_basic "Authentication";
auth_basic_user_file /opt/nginx/html/.hg/file.password;
proxy_pass http://localhost:8000/;
}

除了在身份验证后完全加载 Mercurial 实例之外,这工作正常。我得到了我希望看到的页面,但/static 引用都已损坏,并且我单击的链接(例如变更集之一)也已损坏(找不到它们或将我带回损坏的主页)。它试图在 my-ip-address/static/... 找到这些文件,这是不正确的。

mercurial ui 目录在我的文档根目录/opt/nginx/html 之外。
/static 的实际路径是:/usr/share/mercurial/templates
这是问题吗??这些文件在我的 nginx 文档根目录之外?
当 mercurial 运行时/rev 在哪里,我如何确保 mercurial 使用正确的资源 URL 正确运行?

备注 :只需转到 my-ip-address:8000 即可 100% 工作。没有任何问题,也没有缺少 css 或 js。问题发生在 proxy_pass 上。

如何正确链接这些文件?是否需要重写?

最佳答案

问题是默认情况下,Web 服务器以 hg serve 启动。不会向它生成的 URL 添加任何前缀。它无法知道您是对/mercurial 位置的 NGinx 代理传递请求。

您必须设置前缀以与 --prefix 一起使用选项。 hg help serve告诉我们这个选项:

--prefix PREFIX prefix path to serve from (default: server root)



所以只需以这种方式运行服务器: hg serve --prefix mercurial一切都应该没问题! (不要忘记删除您的别名...)

如果您愿意,也可以在配置文件中设置前缀选项,如果您有:
[web]
prefix = mercurial

关于mercurial - hg 中的断开链接通过 proxy_pass 在 nginx 后面服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8439349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com