Nginx listen 监听端口的实现配置

 更新时间:2023年12月04日 15:03:36   作者:富士康质检员张全蛋  
本文将介绍Nginx的listen指令及其在配置文件中的应用,通过了解listen指令,我们可以知道Nginx如何监听端口,并配置相应的服务器块来处理进入的请求

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端口都可以提供服务

[root@jenkins ~]# ifconfig 
br-a07742cf33c8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.0.1  netmask 255.255.255.0  broadcast 10.1.0.255
        inet6 fe80::42:9bff:fe4a:a821  prefixlen 64  scopeid 0x20<link>

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:90ff:fee6:469b  prefixlen 64  scopeid 0x20<link>

eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.11.128  netmask 255.255.255.0  broadcast 192.168.11.255
        inet6 fe80::20c:29ff:fe00:9de2  prefixlen 64  scopeid 0x20<link>

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>

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

location / {
  root html;
  index index.html index.htm;
}

[root@jenkins nginx]# cd html/
[root@jenkins html]# ls
50x.html  index.html
[root@jenkins html]# for ip in `ifconfig | grep -w inet | awk '{print $2}'`;do echo $ip**********;curl $ip;done 

10.1.0.1**********
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>

172.17.0.1**********
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>

192.168.11.128**********
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>

127.0.0.1**********
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>

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

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

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

[root@jenkins conf]# nginx -s quit
[root@jenkins conf]# nginx

[root@jenkins conf]# for ip in `ifconfig | grep -w inet | awk '{print $2}'`;do echo $ip**********;curl $ip;done 
10.1.0.1**********
curl: (7) Failed connect to 10.1.0.1:80; Connection refused
172.17.0.1**********
curl: (7) Failed connect to 172.17.0.1:80; Connection refused
192.168.11.128**********
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
127.0.0.1**********
curl: (7) Failed connect to 127.0.0.1:80; Connection refused

到此这篇关于Nginx listen 监听端口的实现配置的文章就介绍到这了,更多相关Nginx listen 监听端口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:

相关文章

  • Nginx隐藏版本号的方法

    Nginx隐藏版本号的方法

    这篇文章主要介绍了Nginx隐藏版本号的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Nginx中配置过滤爬虫的User-Agent的简单方法

    Nginx中配置过滤爬虫的User-Agent的简单方法

    这篇文章主要介绍了Nginx中配置过滤爬虫的User-Agent的简单方法,文中罗列了一些常用搜索引擎的爬虫名称以免造成不必要的过滤,需要的朋友可以参考下
    2016-01-01
  • Nginx正则表达式相关的参数和规则介绍

    Nginx正则表达式相关的参数和规则介绍

    这篇文章主要给大家介绍了关于Nginx正则表达式相关的参数和规则的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Nginx正则表达式具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-05-05
  • nginx配置报404问题排查解决

    nginx配置报404问题排查解决

    这篇文章主要给大家介绍了关于nginx配置报404问题排查解决的相关资料,当我们在访问网站时常常会遇到一些我们没能想到的问题或者其他错误,此时我们访问的是无法路由的页面,也就是404页面,需要的朋友可以参考下
    2023-08-08
  • 利用nginx访问日志如何记录mysql中的用户id详解

    利用nginx访问日志如何记录mysql中的用户id详解

    这篇文章主要给大家介绍了关于利用nginx访问日志如何记录mysql中用户id的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-07-07
  • win10系统安装Nginx的详细步骤

    win10系统安装Nginx的详细步骤

    Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器,同时也提供了IMAP/POP3/SMTP服务,这篇文章主要介绍了win10系统安装Nginx的详细步骤,需要的朋友可以参考下
    2023-02-02
  • 修改Nginx与Apache上传文件大小限制

    修改Nginx与Apache上传文件大小限制

    这篇文章主要介绍了修改Nginx与Apache上传文件大小限制,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Nginx内网单机反向代理的实现

    Nginx内网单机反向代理的实现

    本文主要介绍了Nginx内网单机反向代理的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • nginx做代理时如何修改querystring方法详解

    nginx做代理时如何修改querystring方法详解

    这篇文章主要介绍了nginx做代理时如何修改querystring的方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 修改Nginx源码实现worker进程隔离实现详解

    修改Nginx源码实现worker进程隔离实现详解

    这篇文章主要为大家介绍了修改Nginx源码实现worker进程隔离实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10

最新评论