我在设置一个返回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安全吗?
我留下了什么?
提前感谢各位。