2016-11-24 93 views
0

好的,首先讓我首先說我知道,我應該去net/http框架,除非我有知識寫自己的或者我明確地嘗試過,並沒有奏效。然而,我是一個白癡,我認爲我可以通過使用一個框架節省一些時間和頭痛,我認爲選擇一個人只有一個人維護是一個好主意。框架在這裏: https://github.com/kataras/iris 但我不希望你通讀全部。然而,它基於fasthttp的頂部,你可能有一些經驗(希望)。轉到IRIS http frameowrk,我無法獲得路由權

我在這個框架中遇到的問題是配置靜態內容服務。例如,我有我的服務索引頁:

iris.Get("/", serveHome) 

它服務和HTML模板在IP:端口。

我已經靜態ressources列出象這樣:

iris.Static("/css", "./client/css") 

哪些基本結束了在IP服務於DIR CSS:端口/ CSS

然而,當我把這一切都建立一個服務器上,重定向MYDOMAIN 。實例和www.mydomain.example到IP:使用nginx的(使用SSL & TLS證書)端口,這工作:

iris.Get("/", serveHome) 

,並在mydomai服務中的index.html n.example。這並不:

iris.Static("/css", "./client/css") 

現在我的網站不能訪問任何靜態資源,因爲它試圖訪問mydomain.example/CSS,但是因爲某些原因,沒有指向IP:端口/ CSS。

任何線索爲什麼會發生這種情況,你有沒有在之前的任何其他http服務器上看到過這種行爲,如果有的話,你有沒有可能幫助我弄清楚這件事的指針?即使只是猜測,我也會感到茫然,任何建議都會有用。

+8

最好的建議是:不要使用虹膜。你越早轉好。 – Volker

+0

除非在那裏存在非常惡意的東西,否則我寧願堅持這個項目。轉移到網絡/ http可能需要一段時間,但最終。我可能會這樣做。它會講1-2小時,但我已經用各種方法解決這個問題已經浪費了近1個小時。 – George

+3

我不建議你使用虹膜,首先沒有理由在Go中使用框架,第二,也更重要的是作者被盜用httprouter的代碼:https://github.com/julienschmidt/httprouter/issues/148取而代之的是我推薦您閱讀這篇文章:https://www.nicolasmerouze。com/build-web-framework-golang/ –

回答

0

我知道你已經在移植它,但如果我必須猜測,我會說這個問題是你使用的./client/css的相對路徑。

如果你正在編寫本並運行它形成自己的開發環境,這幾乎將$GOPATH/bin下運行,我想你的CSS文件在$GOPATH/src/path/to/project/client/css ...那麼當編譯服務器嘗試找到$GOPATH/bin./client/css ..好吧,我想你明白了,它在$GOPATH/bin/client/css中查找。但這只是一個猜測,我需要從您的項目中獲取更多信息來調試。

移植你的項目祝你好運!

+0

Ahm,我非常非常非常懷疑那。據我所知,go應用程序使用您運行的目錄運行。如果我的二進制文件位於/ path/to/dir/binary中,並且運行./binary,則二進制文件將具有/ path/to/dir作爲其當前目錄。 $ GOPATH和$ GOROOT是go工具所必需的,它可以讓你的項目像這樣排序,因爲你總是知道你的二進制文件/源代碼/軟件包在哪裏,但是在我運行它的服務器上,我甚至沒有去安裝。 – George

+0

你是對的,我的壞,這只是一個猜測。剛剛檢查過。 – peiiion