1
blackcrystal 2023-05-26 00:01:14 +08:00 1
Hugo 生成静态页面时并不知道你会把博客放在 /blog/路径下,它仍认为博客里的所有链接都应该直接以 /开头。
Nginx 在这里只会机械地将你 80 端口上的 Hugo 静态博客转发给浏览器,它并不会替换已生成的 html 里的链接,所以你这样折腾 Nginx 配置显然是没有效果的。 我们只需要让 Hugo 知道博客放在 /blog/路径下即可,方法是修改 Hugo 的 baseUrl 选项(可参考文档: https://gohugo.io/getting-started/configuration/#baseurl ) 这样它就不会往静态网页里放置错误的不以 /blog/开头的链接了。 ======================= 顺便问了下 ChatGPT ,虽然 GPT-3.5 给的答案明显是错误的,但是 GPT-4 给的答案非常不错。楼主以后可以多尝试一下诸如 ChatGPT 的服务,这样的大语言模型很擅长这些“个性化”的问题。若是下次遇到这样的麻烦,我相信它可以帮你节约很多时间。 以下是 GPT-4 给出的解决方案,供参考: ![image.png]( https://vip2.loli.io/2023/05/25/XNz6suZOpvxoRk3.png) |
2
hwlhwlxyz 2023-05-26 02:38:50 +08:00 1
最好标注一下 hugo ,说不定有更多人进来看到。
如果从 hugo 入手,可以试试设置 ugly url ,说不定能解决问题。 https://skyao.io/learning-hugo/docs/theme/docsy/uglyurl.html 不过我用的时候,发现 pretty url 相对路径图片处理不好,ugly url 跳转链接有问题,干脆就不想用了,就自己造轮子了。 从 nginx 来设置的话,要尝试匹配一下.html 文件。hugo 默认跳转都是 /结尾,但是实际是里面的 index.html 文件的,我记得。 location /blog/ { root /www/static-web/static-web; // 你的编译好的网站目录 try_files $uri $uri/ /index.html; } hugo 直接跑 server ,nginx 代理缺少 css 应该是路径问题,不过一般不会这么做,都是编译好的静态页面让 nginx 跑。 |
3
ysc3839 2023-05-26 02:41:32 +08:00 via Android
更建议直接分域名
|
4
lovelylain 2023-05-26 08:23:25 +08:00 via Android
hugo 有很多配置,可以试试修改 relativeURLs 为 false 或者设置 baseURL 。子目录反代的时候如果网页里用的相对路径,就不会有问题,但如果用的绝对路径,就会找错路径了,像 hugo 这样有配置的改配置是最好的,让网页自己解决问题,如果网页本身不提供配置,一个可行但非常麻烦的方法是用 sub_filter 和 proxy_redirect 等做替换修复路径,非常非常麻烦的无奈选择。
|
5
cslive 2023-05-26 09:01:27 +08:00 1
用不同子域名分开,你这样以后还会有问题
|
6
aaronkk 2023-05-26 09:10:40 +08:00
代理的服务同时都有 /的请求,从 nginx 重定向不好做,除非路径细分不然很容易冲突,最简单还是区分域名,或者从 hugo 设置,/改为 /blog/
|
7
mk0114 2023-05-26 09:35:52 +08:00
强烈建议你分二级域名,要是图省事就再 docker 起一个 nginx proxy manager ,省心省事。
|
8
Limgmk 2023-05-26 14:53:22 +08:00
应该和 nginx 没关系,你的博客里的链接有问题。想办法将博客里的链接 path 从 /post/xxx 修改为 /blog/post/xxx ,具体怎么做可以去翻翻你用的博客的文档。否则的话,你如果在 nginx 里面配置就会很麻烦,毕竟,其他服务也可能有路径为 /post/xxx 的请求。话说用子域名区分不好吗,用 path 分流太麻烦了。
|
9
maxwell29 OP 我记得我回复了,不知道为什么没有显示出来。今天的马桶白坐了。我不该埋怨什么,能和大家交流已经很感恩。
----- 昨天在家折腾一天,按照大家的建议用分域名实现了博客的域名访问。 期间主要是转移注意力,部署了 typecho 。但是通过域名+nginx 反代 docker 部署的 typecho 无法登录后台和开展评论,所以浪费了很多时间,最终也没有成功。在局域网内通过 IP+端口用 http 的方式,能够正常使用 docker 部署的 typecho ,通过域名+nginx 反代,即便是按照网上说的在 typecho 配置文件中加入 https 访问代码,始终不成功。心中充满了“怨念”。 回到 hugo 静态博客上,我之前有试过更改 baseurl ,但是没有成功。整个部署过程像是做实验,反正到现在,我已经成功部署了 hugo 静态博客在我的 ubuntu 主机上,可以正常访问和使用。 nginx proxy manager 感觉不好用,我用来配置了几个我用 nginx.conf 正常的项目,总是不成功,也放弃了。 到现在我还不明白 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; 上面这一堆到底是什么意思,庆幸的是我服务器上一堆乱七八糟的服务还能跑起来。后面再慢慢研究。 谢谢大家。 |