所以我在我的头脑中,但我几乎有一个工作的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为中心的。请随时纠正我。
答案 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;
}