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或私网地址上就行。当然不要网络绑定最优了。