Nginx listen 监听端口详解

这篇具有很好参考价值的文章主要介绍了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端口都可以提供服务

[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是不一样的。文章来源地址https://www.toymoban.com/news/detail-763685.html

[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 监听端口详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nginx配置网络分流,监听80和443端口(Ubuntu22.04)

    启动 重载配置 查看状态 文件目录 /etc/nginx/nginx.conf 80端口尚未添加http2参数 使用http://的格式,如果使用了CF的CDN加速,则将域名对应的SSL/TLS边缘证书选项的始终使用HTTPS关闭 SSL/TLS 加密模式随意 使用https://的格式,如果使用了CF的CDN加速,则将域名对应的SSL/TLS边缘证书选项的

    2024年01月19日
    浏览(37)
  • 阿里云CentOS8系统上Nginx部署多个Vue项目(多端口监听)

    阿里云CentOS8系统上安装Nginx服务器----Vue项目部署(一) 阿里云CentOS8系统上部署前后端分离项目----Vue项目部署(二) 编译工具:webstorm 终端中输入:npm run build 打包成功,文件都生成在项目中dist下 将打包好的Vue项目的dist文件夹中的文件全部上传到服务器上。 路径位于上一步查到

    2024年02月06日
    浏览(66)
  • Linux学习之nginx虚拟域名主机,lsof和netstat命令查看端口是否被监听

    需要先参考我的博客《Linux学习之Ubuntu 20.04在https://openresty.org下载源码安装Openresty 1.19.3.1,使用systemd管理OpenResty服务》安装好 Openresty 。 虚拟域名可以使用让不同的域名访问到同一台主机。 cd /usr/local/openresty 切换当前访问目录到 /usr/local/openresty 。 在 /usr/local/openresty/nginx/co

    2024年02月11日
    浏览(48)
  • Nginx多端口访问设置详解

    Nginx是一个强大的开源Web服务器软件,它可以用来搭建高性能、可靠的网站和应用。在一些特定的场景中,我们可能需要配置Nginx以支持多个端口的访问。本文将详细介绍如何使用Nginx配置多端口访问,并提供相应的源代码示例。 首先,确保已经安装了Nginx并且可以正常运行。

    2024年02月08日
    浏览(36)
  • linux 服务器进程、端口查找,nginx 配置日志查找,lsof 命令详解

    1.1 使用查看端口号对应的进程信息 方式一 : 使用netstat命令 -t:显示TCP连接 -u:显示UDP连接 -l:仅显示监听状态的连接 -n:以数字形式显示端口号,而不是以服务名称显示 通过管道符号|将netstat的输出结果传递给grep命令,用于过滤出包含指定端口号的行。 执行命令后,终端

    2024年02月04日
    浏览(63)
  • Navicate远程连接Centos-Oracle19c:ORA-12541: TNS: no listener 无监听错误 - tcping 1521端口关闭

    这个问题无比奇怪,因为半个月前安装oracle的时候,当场就能使用navicate连接远程的数据库。但是昨天晚上突然就连不上了。一直提示说没有监听,但是我在Centos上可以启动监听,并且连接sqlpus,查看用户修改密码都没有问题。 我在虚拟机本机 tcping 127.0.0.1 1521 ,端口是open的

    2024年02月03日
    浏览(48)
  • 分布式 - 服务器Nginx:基础系列之Nginx静态资源配置指令server_name | listen | location | root | alias | index| error_page

    通过浏览器发送一个HTTP请求实现从客户端发送请求到服务器端获取所需要内容后并把内容回显展示在页面。这个时候,我们所请求的内容就分为两种类型,一类是静态资源、一类是动态资源。静态资源即指在服务器端真实存在并且能直接拿来展示的一些文件,比如常见的ht

    2024年02月04日
    浏览(47)
  • nginx : [warn] the “ssl“ directive is deprecated, use the “listen ... ssl“ directive instead 解决

    配置nginx 加载 证书,卸载SSL 启动时告警 nginx 报错 : [warn] the \\\"ssl\\\" directive is deprecated, use the \\\"listen ... ssl\\\" directive instead: 错误配置 nginx版本在1.15.x版本之后的,ssl on; 要去掉,listen 443; 改为 listen 443 ssl 调整后配置文件

    2024年02月11日
    浏览(96)
  • nginx: [warn] the “ssl“ directive is deprecated, use the “listen ... ssl“ directive instead in /

    原因: nginx在1.15.x版本之后不再使用 ssl on; 解决方法: ssl on; 要去掉,将 listen 443; 改为 listen 443 ssl; 原配置文件: worker_processes  1; events {     worker_connections  1024; } http {     include       mime.types;     default_type  application/octet-stream;     sendfile        on;     keepalive_timeout  

    2024年02月04日
    浏览(49)
  • (五)在docker中添加nginx端口映射(解决docker中的nginx无法访问除80端口以外的问题)

    问题描述: 我们在docker中开启nginx以后,如果这时候在nginx中配置除了80以外的端口的监听,会发现无法访问,这时候其实是因为我们没有开启端口映射导致的。 这个时候,我们可以采用修改配置文件的方式去添加端口映射,具体步骤如下: 首先先关闭docker,否则修改配置文

    2023年04月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包