nginx 如何处理请求系列2-listen指令

原创
2018/03/23 09:23
阅读数 110

nginx正式处理请求前需要让nginx在某处为listen状态,可以为socket,port,ip:port方式

分析

官方文档

常用为:

listen address[:port]
listen port 
listen unix:path

有address时nginx只监听在该地址的此端口上,如果没有address就默认在所有网络接口上.这在多网卡的服务器配置上十分有用。比如你只想让nginx监听在私网端口上,listen 172.19.23.208:808 便可以让来自于公网和其他网卡的连接refused。 不加端口只使用ip时等价于使用80端口。 不使用listen指令时,等价于listen 0.0.0.0:80。listen可在不同的server中有相同配置(需注意server_name不同)。

listen unix:path不同过网络端口而通过linux文件来暴露接口给用户,通常使用为本机交互,效率高于通过端口交互。

当用户发生访问时,用户访问数据包中的目的地址ip和端口,linux收到后交由匹配的nginx处理,后一阶段为server_name匹配。

server {
    listen      172.19.23.208:81;
    server_name test.com;

}
server {
    listen      808;
    server_name www.test.com;
}

[root@slave2 ~]# netstat -ntpl|grep nginx
tcp        0      0 0.0.0.0:808                 0.0.0.0:*                   LISTEN      1505/nginx            
tcp        0      0 172.19.23.208:81            0.0.0.0:*                   LISTEN      1505/nginx
[root@slave2 ~]# ip r
172.19.23.0/24 dev eth0  proto kernel  scope link  src 172.19.23.208 
172.19.23.0/24 dev eth1  proto kernel  scope link  src 172.19.23.209 

808端口允许目标ip地址为172.19.23.208/172.19.23.209/127.0.0.1的访问,而81端口只允许172.19.23.208。

建议

了解你的应用,最小暴露接口原则。如果不需要公网访问,同时系统又有公网接口时,只需要监听在localhost或私网地址上就行。当然不要网络绑定最优了。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部