我嘗試使用下面的調用運行一個Web服務器如何使碼頭服務器(ring.adapter.jetty)從外部主機訪問
(運行碼頭#'處理{:主機‘主機名’:端口8080})
這啓動一個服務器,我可以從同一個主機訪問,但不能從外部訪問。我正在EC2實例上執行此操作,並使用該計算機的內部IP作爲「主機名」,爲外部訪問打開端口8080。我也嘗試使用「0.0.0.0」作爲主機名,但導致了相同的行爲。
我使用的是稍微過時的環形碼頭適配器(0.2.5),但我無法改變它。
任何幫助,非常感謝!
我嘗試使用下面的調用運行一個Web服務器如何使碼頭服務器(ring.adapter.jetty)從外部主機訪問
(運行碼頭#'處理{:主機‘主機名’:端口8080})
這啓動一個服務器,我可以從同一個主機訪問,但不能從外部訪問。我正在EC2實例上執行此操作,並使用該計算機的內部IP作爲「主機名」,爲外部訪問打開端口8080。我也嘗試使用「0.0.0.0」作爲主機名,但導致了相同的行爲。
我使用的是稍微過時的環形碼頭適配器(0.2.5),但我無法改變它。
任何幫助,非常感謝!
感謝您的答覆球員,事實證明,這是不是與碼頭的一個問題,我在EC2上運行此,並且已經將端口訪問權限應用於不同於此特定實例所屬的安全組的:)
獲得接入和保持私有,你可以運行
的ssh -L 8080:本地主機:8080 your.ec2.instance
然後打開瀏覽器http://localhost:8080/myapp/
你原來的問題: 也許使用外部IP或主機名作爲「主機名」可能有幫助?
只要不指定:host
選項;在這種情況下,Jetty似乎在監聽所有接口。例如,我幫助4clojure。那裏的web服務器真的在服務器raynes.me的端口8080上運行,如果主機HTTP請求是4clojure.com,那麼有一些nginx魔術可以轉發端口80。您可以直接訪問它,如果你喜歡:http://raynes.me:8080正常工作,這裏是我們的碼頭電話:
(run-jetty (var app) {:join? false :port 8080})
謝謝,使用ssh隧道是一個好主意,但在這種情況下,它不適用於我,因爲我不能指望每個想使用這個Web服務器的人都先創建一個隧道。 – fsm
是的,它只是一個黑客的訪問代碼,而你正在開發它,但尚未公佈。希望有一個有用的提示,如果不是真的回答你的問題:) –