應該是一個星期之前出現的問題了,一直沒時間記。今天記一下下。
前戲
由於之前的騰訊雲伺服器被自己搞的很髒,所以就重置了一下。
重新配伺服器的時候,懶得配證書,也懶得用 Caddy Server 實現一些奇奇怪怪的功能,所以就打算使用 Nginx 在伺服器搞一些本地的代理,然後使用 Cadddy Server 反代出去。這樣子就不需要考慮 Caddy Server 的一些侷限,又能很方便地配好證書了。
問題出現
對Hexo,使用 nginx serve static files,也就是 hexo g
出來的一堆檔案,在 localhost:10001
執行,然後caddy做反代。
nginx 的配置檔案:
|
|
可以看到,try_files
欄位是為了解析可能是目錄的一個url,如果存在這個檔案則直接返回,如果不存在就當他是個目錄,如過還不存在就返回404。
CaddyFile 更簡單了:
|
|
但是這個時候出現了一個問題。一旦訪問 https://blog.xugr.me/categories
這個url就會跳轉到 http://localhost:10001/categories/
去。
問題解決
一開始認為是Caddy Server的問題,所以仔細去看proxy的文件,但是似乎沒有什麼發現,胡亂了例子中的預設也沒有什麼作用。況且例子中的proxy就是一樣寫的,所以感覺出問題的可能性比較小。
使用Chrome查看了到底是怎麼跳轉的,發現是在訪問 https://blog.xugr.me/categories
的時候有一個301跳轉,跳到了http://localhost:10001/categories/
。
現在才開始懷疑是自己的nginx沒有配好。進而發現訪問 https://blog.xugr.me/categories/
就沒有問題。
終於注意到了是有沒有 /
的問題。所以一切都是在 nginx 的 try_files
那裡。
如果nginx認為請求的url指向的是一個目錄而不是一個檔案,為了保證url的一致,他會做一個跳轉,到加上了 /
的url,這個時候由於是nginx作出的,所以caddy不再管了,在這裡看來就是去了localhost:10001。
具體解決的話,我直接把try_files改成了這樣:
|
|
這樣就不會做跳轉了。也許也不是一個好辦法,但是浪費了太多時間,也不想管了。大概能用就好。