listen指令的用法

585 阅读1分钟

一个请求进入nginx之后,处理请求之前,要先监听端口,使得nginx和客户端建立一个tcp链接。监听端口的指令为listen指令,它是放在server模块下的,比如:

http {
    server {
       listen 80;
       ......
    }
    server {
        listen 443;
        .....
    }
}

一个http中可以有多个server模块,用于监听处理不同端口。listen指令只能出现在server模块下。

一、listen指令的值

listen指令的值可以是三种:

  • IP地址或者ip:port。

  • port

  • unix:path

1、IP地址或者ip:port

当listen的值为ip地址时,那么只监听该ip地址的请求,包括所有端口。当listen的值为ip:port时,只监听ip:port对应的请求。

2、port

当listen的值为port时,会只监听主机对应的port的请求。

3、unix:path

只能用于本地通信。使用上面两种值进行通讯时,是要走操作系统内核的完整的网络栈的,二unix:path不需要,所以unix:path的性能回更好。

二、listen指令的示例

1、listen unix:/var/run/nginx.sock;

 unix:/var/run/nginx.sock不是一个普通的文件,而是一个unix sock,用于通讯的,使用ls -l查看

2、listen 127.0.0.1:8000;

3、listen 127.0.0.1;

默认使用80端口。

4、listen 8000;

5、listen *8000;

效果同第四项一样。

6、listen localhost:8000 bind;

老的linux配置默认使用8000端口,如果要绑定其他的端口,就需要使用bind进行显示绑定,现在操作系统不需要了。

7、listen [::]8000 ipv6only=on;

8、listen [::1];

监听ipv6的默认回环ip的默认80端口。