我有一個設置在spring-boot項目中的地方。通過Spring Boot獲得一個帶有Spring Boot的EBS 502運行單實例,端口已經打開
我編輯了部署腳本來上傳JAR文件,而不是整個源文件。
當我進入EBS日誌時,可以看到我的服務器正在運行。
我已經設置了SERVER_PORT,我可以從Tomcat是否在端口5000
奇怪的事情是運行,甚至打到EC2實例的公共IP EBS的日誌中看到是給我一個502
你們能幫我從檢查清單中抽出更多的東西嗎?
我有一個設置在spring-boot項目中的地方。通過Spring Boot獲得一個帶有Spring Boot的EBS 502運行單實例,端口已經打開
我編輯了部署腳本來上傳JAR文件,而不是整個源文件。
當我進入EBS日誌時,可以看到我的服務器正在運行。
我已經設置了SERVER_PORT,我可以從Tomcat是否在端口5000
奇怪的事情是運行,甚至打到EC2實例的公共IP EBS的日誌中看到是給我一個502
你們能幫我從檢查清單中抽出更多的東西嗎?
是的,聽起來像Elastic Beanstalk給我。所以,下面我會假設它是。
我沒有配置EC2實例,並直接擊中端口80 EC2實例給了我502
這意味着你必須在你的服務器的前面nginx的(或類似)。這是nginx與502響應,而不是你的應用程序。
端口5000和8080最終超時。
這實際上是502響應的原因--nginx嘗試將請求傳遞到您的應用程序,但超時然後用「502錯誤網關」響應。
Elastic Beanstalk在EC2實例內的Docker容器中運行您的應用程序。然後使用nginx(在實際的EC2實例上運行並充當反向代理)使您的應用可以在EC2實例之外訪問(例如,您的負載均衡器可見)。恐怕這種設置的內部工作有些複雜,不適合答案。但簡而言之,您必須首先檢查5000是否是nginx將用於查找您的應用程序的正確端口。請注意,「Beanstalk支持的平臺」可能會有所不同,例如Go平臺的版本爲3000(如果我的記憶是正確的)。其次,確保這個端口暴露在您的docker文件中。第三,確保你的spring啓動應用程序在該端口上偵聽。
這似乎是供你參考的好短的文章:https://pragmaticintegrator.wordpress.com/2016/07/12/run-your-spring-boot-application-on-aws-using-elastic-beanstalk/
和好,在最壞的情況下,你可以再嘗試它打包爲一個戰爭,而不是使用和青苗的「與Java雄貓」平臺。使用起來更簡單一些,因爲您不需要擔心端口。
您是否檢查過服務器是否可以訪問服務。你是否收到502錯誤的應用程序日誌? –
令人驚訝的是,502狀態並不總是來自服務器。有時它來自代理(甚至某些路由器),當它出錯或無法正確解釋答案時。在你的情況下,我懷疑502真的來自春季啓動應用程序,因爲嵌入式tomcat在這種情況下不作爲網關(因此502並不完全合法)。所以,是的,在您的應用程序中啓用訪問日誌,並查看您是否可以在日誌中找到您的請求。我還建議嘗試從另一個網絡(例如家中)排除行爲不當的代理。 – Seva
我假設我們正在談論普通的EC2實例,而不是Elastic Beanstalk。而且你沒有在你的web應用程序前配置nginx或類似的東西。這是對的嗎?對不起,如果這些是愚蠢的問題。剛剛502將是一個春季啓動應用程序非常奇怪的迴應。所以,我想確保我們不會錯過一些重要的東西,你可能已經忘記了。 – Seva