6

我已经启动了一个 Compojure (Jetty) 服务器:

(defonce *server* (run-server {:host "localhost" :port 8080} "/*" (servlet routes)))

但 netstat 仍然显示它正在侦听 0.0.0.0:8080,即所有 IP。

传递给 run-server 以使其侦听单个 IP 的正确参数是什么?

4

1 回答 1

7

我认为您将不得不修补 Compojure。:host它对您的参数没有任何作用。进行此更改server/jetty.clj似乎可行,但我尚未对其进行彻底测试。

(定义-创建-服务器
  “构造一个 Jetty 服务器实例。”
  [选项 servlet]
  (让 [端口(选项:端口 80)
        主机(选项:主机“0.0.0.0”)
        连接器(doto (org.mortbay.jetty.bio.SocketConnector.)
                    (.setPort 端口)
                    (.setHost 主机))
        服务器(doto(服务器。)
                   (.addConnector 连接器))
        servlet(分区 2 servlet)]
    (当(或(选项:ssl)(选项:ssl-port))
      (添加 ssl 连接器!服务器选项))
    (doseq [[url-or-path servlet] servlet]
      (添加 servlet!服务器 url 或路径 servlet))
    服务器))
user> (run-server {:port 12346})
2009-07-22 13:48:53.999::INFO:  jetty-6.1.15
2009-07-22 13:48:54.002::INFO:  Started SocketConnector@0.0.0.0:12346
nil
user> (run-server {:host "127.0.0.1" :port 12345})
2009-07-22 13:48:08.061::INFO:  jetty-6.1.15
2009-07-22 13:48:08.129::INFO:  Started SocketConnector@127.0.0.1:12345
于 2009-07-22T20:53:26.573 回答