我有这个简单的 nginx 配置文件:
server {
listen 4000;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
}
nginx 服务正在运行,但如果我运行:
nc -z localhost 4000
我没有收到回应,但如果我检查端口 80,它就会起作用:
nc -z localhost 80
Connection to localhost 80 port [tcp/http] succeeded!
我在docker上运行nginx,并暴露端口80和4000。
答案1
这里涉及两件事。
可能您使用了两个不同的
nc
s。一个是静音,一个是详细。在这种情况下,对于静音,可以使用开关-v
让它说话,或者使用其退出代码$?
。(0 表示成功,1 表示失败。)如果情况 1. 不是这样,则无论如何使用
-v
或$?
。很难说不同端口出现这种混合行为的原因是什么。
插图:
$ nc -z localhost 8080
$ echo $?
0
$ nc -z localhost 8081
$ echo $?
1
$ nc -zv localhost 8081
nc: connect to localhost port 8081 (tcp) failed: Connection refused
nc: connect to localhost port 8081 (tcp) failed: Connection refused
$ nc -zv localhost 8080
Connection to localhost 8080 port [tcp/http-alt] succeeded!