• Nginx listen 监听端口详解


    listen 指令


    监听端口: listen address:port [default | default_server | [backlog=num | rcvbuf=size
    | sndbuf=size | accept_filter | deferred | bind | ipv6only=[on|off] | ssl]];
    默认:listen 80
    配置块: server
     
    含义

    指定服务监听的地址,如果使用IP协议,则可以包括IP地址和端口,如果使用UNIX域套接字协议,则为文件路径。

    作用域

    只能在server块中设置,并起作用。

    配置解析
    default default_server :最终处理的服务器设置。
    backlog TCP backlog 队列的大小。(能够承载多少tcp的连接,设置的越大,承载的tcp连接越多,反之)
    rcvbuf :设置接收缓存的大小。
    sndbuf :设置发送缓存的大小。
    这会决定服务器的吞吐速度,如果设置发送缓存大小为8k,那么页面小于8k就可以一次性发送。
    如果大于8k就需要多次往外面发送。一般使用默认。
    accept_filter :设置 accept 过滤器大小,仅对 FreeBSD 操作系统起作用。
    deferred :三次握手后 worker 仍不处理,实际数据到达后 worker 再参与处理。(这样worker进程不会对三次握手牵扯住,他有足够的精力处理手头的工作)
    bind :绑定当前端口 - 地址对,如: 127.0.0.1:8000(只有多个IP地址和端口才涉及到绑定,一般都不需要绑定,因为服务器只有一个IP)
    ssl :在监听的对口上建立连接必须基于 ssl 。(一般不会写在listen的后面,一般ssl在其他的地方配置,配置了ssl那么该端口只提供ssl的服务,说白了就是https)
    ssl需要编译到ssl模块,同时还需要提供ssl证书。

    # 补充知识点:/etc/hosts域名解析文件配置
    当本地浏览器访问某个域名的时候,首先会从/etc/hosts文件中查找,找不到再去dns中去找
    ,所以你可以直接配置本地的域名

    #vim /etc/hosts
    127.0.0.1 www.baidu.com 

    设置方法


    对于IP协议来讲,可以只配置端口,可以只配置IP,也可以IP和端口都配置。 

     示例:

    • listen 8000;   和*.8000一样,表示将服务器所有支持的ip地址都绑定了端口,这样所有的IP地址都可以提供服务。(监听本机所有IP的8000端口)
    • listen *:8000;      如果只有一块网卡,那么只有一个IP,如果是虚拟样还有虚拟网卡的IP,这样实际上就会涉及到多个IP,*代表所有的IP。(监听本机所有IP的9000端口)
    • listen 127.0.0.1:8000;   这样写就是只去绑定127.0.0.1的IP(监听127.0.0.1的8000端口)
    • listen localhost:8000;  这个和listen 127.0.0.1:8000;  效果一样(监听locahost的9000端口)
    • listen 127.0.0.1;  这里默认端口就是80(监听root权限用户127.0.0.1的80端口,非root权限用户不允许启动nginx)
    • listen [::]:8000;  IPV6  监听IPv6的8000端口
    • listen [fe80::1];  这个只写了IPV6的ip,没有写端口号
    • listen [:::a8c9:1234]:80;
    • listen 443 default_server ssl;  443端口,ssl协议
    • listen 127.0.0.1 default_server accept_filter=dataready backlog=1024;  综合了上面所有的写法

     如果没有配置listen指定,对于root权限用户监听80端口,对于非root用户监听8000端口。

     

     

     示例


    只配置端口80 

    在使用listen的时候可以直接配置,直接去写端口号,或者去写其IP地址

    一般都是这种直接就一个80端口,意味着这台主机上面有几个IP,他就会去为这些IP的80端口提供服务。

    下面的这些IP访问80端口都可以提供服务

    1. [root@jenkins ~]# ifconfig
    2. br-a07742cf33c8: flags=4163 mtu 1500
    3. inet 10.1.0.1 netmask 255.255.255.0 broadcast 10.1.0.255
    4. inet6 fe80::42:9bff:fe4a:a821 prefixlen 64 scopeid 0x20<link>
    5. docker0: flags=4099 mtu 1500
    6. inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
    7. inet6 fe80::42:90ff:fee6:469b prefixlen 64 scopeid 0x20<link>
    8. eno16777736: flags=4163 mtu 1500
    9. inet 192.168.11.128 netmask 255.255.255.0 broadcast 192.168.11.255
    10. inet6 fe80::20c:29ff:fe00:9de2 prefixlen 64 scopeid 0x20<link>
    11. lo: flags=73 mtu 65536
    12. inet 127.0.0.1 netmask 255.0.0.0
    13. inet6 ::1 prefixlen 128 scopeid 0x10

    root表示web服务器能够访问的根,默认首页是index.html或者index.htm。50x.html表示当服务器发生错误的时候会自动返回50x.html的页面

    1. location / {
    2. root html;
    3. index index.html index.htm;
    4. }
    5. [root@jenkins nginx]# cd html/
    6. [root@jenkins html]# ls
    7. 50x.html index.html
    1. [root@jenkins html]# for ip in `ifconfig | grep -w inet | awk '{print $2}'`;do echo $ip**********;curl $ip;done
    2. 10.1.0.1**********
    3. <head>
    4. Welcome to nginx!
    5. 172.17.0.1**********
    6. <head>
    7. Welcome to nginx!
    8. 192.168.11.128**********
    9. <head>
    10. Welcome to nginx!
    11. 127.0.0.1**********
    12. <head>
    13. Welcome to nginx!

    可以看到这三个IP的端口都可以对外提供服务,也就是机器上面插了几块网卡,那么就有几块IP,如果配置的时候不去指定IP,那么这些网卡上的IP就都可以对外提供服务。

    指定某个IP对外提供服务,其他IP不对外提供服务

    注意,修改之后,需要重启,重启和reload是不一样的。

    1. [root@jenkins conf]# nginx -s quit
    2. [root@jenkins conf]# nginx
    3. [root@jenkins conf]# for ip in `ifconfig | grep -w inet | awk '{print $2}'`;do echo $ip**********;curl $ip;done
    4. 10.1.0.1**********
    5. curl: (7) Failed connect to 10.1.0.1:80; Connection refused
    6. 172.17.0.1**********
    7. curl: (7) Failed connect to 172.17.0.1:80; Connection refused
    8. 192.168.11.128**********
    9. <head>
    10. Welcome to nginx!
    11. 127.0.0.1**********
    12. curl: (7) Failed connect to 127.0.0.1:80; Connection refused
  • 相关阅读:
    [oeasy]python001_先跑起来_python_三大系统选择_windows_mac_linux
    shadow bias之为啥有acne
    【C++编程语言】之string容器 基本概念 构造函数 赋值 拼接 查找 替换比较 插入 删除 子串获取
    ClickHouse多级磁盘和冷热数据分离实践
    2021年软件测试面试题大全
    【小吉测评】高效简洁的数据库管控平台—CloudQuery
    Flutter FlutterActivity找不到
    【JavaWeb】后端(MySQL+Mybatis)
    HttpRunnerManager(四) - 完成安装注册&登录
    【基础篇】二、parent继承、starter、引导类、内嵌tomcat
  • 原文地址:https://blog.csdn.net/qq_34556414/article/details/132847822