Clojure应用程序仅在tcp6中运行

时间:2018-04-23 22:36:01

标签: websocket clojure webserver

所以我在我的头脑中,但我几乎有一个工作的Clojure应用程序与WebSocket连接部署到类似prod的环境,但有一些我似乎无法解决的事情。当我从curl使用localhost点击端点时,我得到了我希望的响应,到目前为止一直很好。但是当我尝试从我的域中访问它时,我没有得到连接。当我检查netstat以确保端口(8001)已打开时,我看到以下内容:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3283/nginx: master  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3218/sshd           
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      3283/nginx: master  
tcp6       0      0 :::8001                 :::*                    LISTEN      3260/java           
tcp6       0      0 :::80                   :::*                    LISTEN      3283/nginx: master  
tcp6       0      0 :::22                   :::*                    LISTEN      3218/sshd           
tcp6       0      0 :::443                  :::*                    LISTEN      3283/nginx: master  

我正在运行ufw但我已经allow编辑了端口,所以我不确定在运行应用程序时是否需要执行某些操作以使其正常{{1} 1}}服务?还是我在错误的树上吠叫?

这是当前正在运行的命令:

tcp

此外,我在这里和serverfault之间徘徊,但选择了stackoverflow因为我认为它是以Clojure为中心的。请随时纠正我。

1 个答案:

答案 0 :(得分:1)

看起来你有一个很好的设置,其中nginx为你的应用程序提供反向代理,这是一个可行的方法。 ::: 8001上的tcp6监听器也可能正在监听ipv4以及ipv6它只是不打印它们 乍一看,看起来nginx缺少/*localhost:8001/*

的转发规则

他们在ngins.conf中看起来像这样。

location ~ ^/.* {
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_set_header X-Forwarded-Proto $fwd_proto;
  proxy_redirect off;

  proxy_pass http://localhost:8001;
}