Websocket Clojure应用程序仅在tcp6中运行

Websocket Clojure应用程序仅在tcp6中运行,websocket,clojure,webserver,Websocket,Clojure,Webserver,所以,我在我的头,但我几乎有一个工作Clojure应用程序与WebSocket连接部署到一个类似prod的环境,但有一些事情,我似乎无法解决。当我从localhost使用curl到达端点时,我得到了我所希望的响应,到目前为止还不错。但是当我尝试从我的域访问它时,我没有连接。当我检查netstat以确保端口8001打开时,我看到以下内容: Proto Recv-Q Send-Q Local Address Foreign Address State

所以,我在我的头,但我几乎有一个工作Clojure应用程序与WebSocket连接部署到一个类似prod的环境,但有一些事情,我似乎无法解决。当我从localhost使用curl到达端点时,我得到了我所希望的响应,到目前为止还不错。但是当我尝试从我的域访问它时,我没有连接。当我检查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,但我已经允许该端口,因此我不确定在运行应用程序时是否需要执行某些操作,以使其作为正常的tcp服务可用?还是我找错树了

以下是当前正在运行的命令:

java -jar test.jar 8001

我也在这里和serverfault之间左右为难,但选择了stackoverflow,因为我认为它是以Clojure为中心的。请随时纠正我。

看起来你有一个很好的设置,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;
}

谢谢我确信我在nginx中设置了错误的东西。我希望保留其余的web站点,但添加必要的配置以将请求指向wss://domain.com:8001 到终点。我提出了另一个问题,希望这就是我需要的。