Clojure 如何使Compojure侦听单个IP
我已经启动了一个Compojure(Jetty)服务器,它具有:Clojure 如何使Compojure侦听单个IP,clojure,compojure,Clojure,Compojure,我已经启动了一个Compojure(Jetty)服务器,它具有: (defonce *server* (run-server {:host "localhost" :port 8080} "/*" (servlet routes))) 但是netstat仍然显示它正在0.0.0.0:8080(即所有IP)上侦听 传递给运行服务器使其在单个IP上侦听的正确参数是什么?我认为您必须修补Compojure。它对您的:host参数没有任何作用。对server/jetty.clj进行此更改似乎可行,但我
(defonce *server* (run-server {:host "localhost" :port 8080} "/*" (servlet routes)))
但是netstat仍然显示它正在0.0.0.0:8080(即所有IP)上侦听
传递给运行服务器使其在单个IP上侦听的正确参数是什么?我认为您必须修补Compojure。它对您的
:host
参数没有任何作用。对server/jetty.clj
进行此更改似乎可行,但我尚未对其进行彻底测试
(defn- create-server
"Construct a Jetty Server instance."
[options servlets]
(let [port (options :port 80)
host (options :host "0.0.0.0")
connector (doto (org.mortbay.jetty.bio.SocketConnector.)
(.setPort port)
(.setHost host))
server (doto (Server.)
(.addConnector connector))
servlets (partition 2 servlets)]
(when (or (options :ssl) (options :ssl-port))
(add-ssl-connector! server options))
(doseq [[url-or-path servlet] servlets]
(add-servlet! server url-or-path servlet))
server))
现在它已经被应用到compojure中,所以它可以正常工作了——是的,开源!
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