【问题标题】:How to make jetty server (ring.adapter.jetty) accessible from external hosts如何使码头服务器(ring.adapter.jetty)可以从外部主机访问
【发布时间】:2011-10-01 16:35:19
【问题描述】:

我正在尝试使用以下调用来运行 Web 服务器

(run-jetty #'handler {:host "hostname" :port 8080})

这会启动一个服务器,我可以从同一主机访问该服务器,但不能从外部访问。我在 EC2 实例上执行此操作,我使用该机器的内部 IP 作为“主机名”,端口 8080 对外部访问开放。我也尝试使用“0.0.0.0”作为主机名,但结果相同。

我使用的是稍微过时的 ring-jetty-adapter (0.2.5) 版本,但我无法更改。

非常感谢任何帮助!

【问题讨论】:

    标签: clojure jetty embedded-jetty compojure ring


    【解决方案1】:

    要获得访问权限并将其保密,您可以运行

    ssh -L 8080:localhost:8080 your.ec2.instance

    然后打开浏览器http://localhost:8080/myapp/

    对于您的原始问题: 也许使用外部 ip 或主机名作为“主机名”可能会有所帮助?

    【讨论】:

    • 谢谢,使用 ssh 隧道是个好主意,但在这种情况下它对我不起作用,因为我不能指望每个想要使用这个 Web 服务器的人都首先创建一个隧道。
    • 是的,这只是在您开发代码时访问代码但尚未公开的黑客。如果不是您的问题的真正答案,希望能提供有用的提示:)
    【解决方案2】:

    根本不指定:host 选项;在这种情况下,Jetty 似乎会监听所有接口。例如,我帮助4clojure。那里的网络服务器实际上在服务器 raynes.me 的端口 8080 上运行,如果主机 HTTP 请求是 4clojure.com,则使用一些 nginx 魔术来转发端口 80。如果您愿意,可以直接访问它:http://raynes.me:8080 工作正常,这是我们的码头呼叫:

    (run-jetty (var app) {:join? false :port 8080})
    

    【讨论】:

    • 谢谢,出于好奇,现在有多少用户在使用 4clojure?
    【解决方案3】:

    感谢您的回复,事实证明这不是码头的问题,我在 EC2 上运行它,并且一直将端口访问权限应用于与该特定实例所属的安全组不同的安全组:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-15
      • 2012-08-02
      • 2013-09-29
      • 2012-12-11
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 2015-12-14
      相关资源
      最近更新 更多