我正在设置一个返回 JSON 的服务,多亏了 Ring, Compojure 和 Jetty。我遇到的问题是在我想使用 Nginx 作为反向代理时。如果使用以下处理器,它不起作用。
(def wrapped-handler
;; Handler middlewares
(-> all-routes
(wrap-defaults (assoc-in site-defaults [:security :anti-forgery] false))
wrap-params
wrap-session
))
我收到的消息是
java.lang.NullPointerException
at ring.adapter.jetty$proxy_handler$fn__6990.invoke(jetty.clj:26)
at ring.adapter.jetty.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:503)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
at java.base/java.lang.Thread.run(Thread.java:834)
但如果添加 wrap-reload,一切都会变好。
(def wrapped-handler
;; Handler middlewares
(-> all-routes
(wrap-defaults (assoc-in site-defaults [:security :anti-forgery] false))
wrap-params
wrap-session
(#(if (config :debug) (wrap-reload %)))
))
我的 Nginx 部署如下。
server {
server_name domain.com;
location / {
proxy_pass https://127.0.0.1:9000/;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
}
在生产中保留 wrap-reload 是否安全?
我留下了什么?
感谢各位。