我尝试使用下面的调用运行一个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
是的,它只是一个黑客的访问代码,而你正在开发它,但尚未公布。希望有一个有用的提示,如果不是真的回答你的问题:) –