EveSunMaple / Frosti

A clean, elegant, and fast static blog template! 🚀 Developed with Astro
https://frosti.saroprock.com
GNU General Public License v3.0
181 stars 30 forks source link

通过nginx代理后访问其他页面ERR_CONNECTION_RESET #45

Open liangyoufeng opened 1 month ago

liangyoufeng commented 1 month ago

Title: 🛠️ Bug Report: [Brief Description of the Issue] 通过nginx代理后,默认端口不是80访问其他栏目页面会出现重置连接 Date: [Date] 20240927 Affected Version: [Version Number] 2.5.7 Description: A detailed description of the bug or issue. Include any error messages, unexpected behavior, or deviations from the expected functionality. 通过nginx代理后,默认端口不是80访问其他栏目页面会出现重置连接。 image 我尝试过更改nginx的配置,但是还是失败了,手动加上端口是可以访问的,我记得在hexo里配置全局文件里有设置端口再编译出来就可以用了,不知道是不是代码上写死了80端口url不?

image

Loping151 commented 1 month ago

模板使用的跳转就是相对路径的 href,你在 src/consts.ts中看到的href,比如/blog,实际上就通过src/components/HeaderMenu.astro

  <a
    tabindex="0"
    class="menu-item text-xl font-bold p-4"
    id={`header-${item.id}`}
    title={item.id}
    href={item.href}
    target={item.target || "_self"}
    aria-label={item.text}
  >
    {item.text}
  </a>

进行跳转。按理说默认是支持端口的,比如打开pnpm dev,从 http://localhost:4321 跳转到 http://localhost:4321/blog 是正常的。我猜想可能是你的nginx配置问题导致端口丢失。你把模板代理在50001,我猜想你的80或443端口可能有其它东西。你的配置里是否包含了 proxy_set_header Host $host:$server_port; 来传递端口呢?

另外,条件允许的话还是代理在子域名的80端口比较常见。。虽然可以在模板里显式的href中显式的指定链接和端口,但是我不清楚这样做的必要性。

liangyoufeng commented 1 month ago

配置已经包含proxy_set_header Host $host:$server_port;了,另外问了一下开发群大佬,他们说开发不应该使用决定路径,建议是相对于路径,写死了的话,没法进行传递。