nginx第三天

本文介绍了Nginx的模块系统,重点讲解了HTTP模块中的server、location、proxy_pass等指令,TCP模块的代理和负载均衡功能,以及Mail模块在邮件服务中的应用。同时,提供了HTTP和TCP模块的配置实例,展示如何实现反向代理和负载均衡,确保服务的高可用性。
摘要由CSDN通过智能技术生成

Day 3: Nginx模块

1.学习Nginx的模块系统,如HTTP、TCP、Mail等 。

1.1http模块

HTTP模块是Nginx最常用的模块,它提供了HTTP协议的支持,包括HTTP请求的处理、转发、缓存、重定向、认证等。

HTTP模块中一些重要的指令包括:

  • server:定义一个HTTP服务的配置块,可以设置监听端口、域名、反向代理等。
  • location:定义一个URL的匹配规则,用于配置请求的处理方式,可以设置反向代理、缓存、重定向等。
  • proxy_pass:设置反向代理的目标地址。
  • root:设置Web根目录。
  • error_page:设置错误页面的返回码和返回内容。
  • if:条件语句,用于根据请求头、请求参数、IP地址等条件来控制请求的处理方式。

HTTP模块中还提供了一些常用的变量,例如:

  • $uri:请求的URI。
  • $args:请求的参数。
  • $http_x_forwarded_for:代理服务器的IP地址。

1.2TCP模块

TCP模块提供了TCP/UDP协议的支持,可以用于实现代理、负载均衡、限流、流量控制等。TCP模块中包括的指令和变量相对较少,但是提供了一些重要的功能。

TCP模块中一些重要的指令包括:

  • stream:定义一个TCP服务的配置块,可以设置监听端口、代理服务器等。
  • server:定义一个TCP服务的配置块,可以设置监听端口、代理服务器等。
  • proxy_pass:设置代理服务器的目标地址。

TCP模块中还提供了一些常用的变量,例如:

  • $remote_addr:客户端的IP地址。
  • $proxy_protocol_addr:代理服务器的IP地址。

1.3Mail模块

  • Nginx的Mail模块是Nginx的一个模块,可以用于邮件服务的代理和负载均衡,支持POP3, IMAP, SMTP, 和LMTP等协议。Mail模块也可以像HTTP模块一样配置反向代理和负载均衡,使用upstream模块配置Mail服务器的负载均衡。

    Mail模块的指令和HTTP模块有所不同,主要有以下指令:

    mail: 定义Mail协议配置块

    server : 定义Mail服务器

    listen: 监听特定的地址和端口号

    protocol: 定义Mail协议类型

    auth_http: 使用HTTP协议验证用户名和密码

    starttls: 启用STARTTLS协议

    ssl_preread: 检查SSL握手,可以将邮件请求路由到正确的SSL/TLS后端服务器

    Mail模块还支持使用SMTP代理和SSL/TLS。可以使用SMTP代理将发件人的SMTP请求代理到邮件服务器,也可以使用SSL/TLS保护邮件服务器与邮件客户端之间的通信。

2.熟悉各种模块的用法和配置方法。

2.1http使用练习

​ 使用nginx的HTTP模块和反向代理功能,实现一个代理服务器负载均衡访问两台web服务器的静态网站具体步鄹如下:

web服务器1:192.168.141.135
web服务器2:192.168.141.136
代理机:192.168.141.128

1.安装nginx(略)

2.配置nginx文件(代理机)

vim /etc/nginx/conf.d/web.conf
...
upstream web_servers {
    server 192.168.141.135:80;
    server 192.168.141.136:80;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://web_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        if ($uri !~* "\.(gif|jpg|jpeg|png|css|js|ico)$") {
            expires 1d;
        }
    }
}

...

配置完成后,当用户访问http://example.com时,Nginx会将请求转发给192.168.141.136或192.168.141.135中的一台Web服务器,并将其返回给用户。由于使用了反向代理和负载均衡的功能,即使其中一台Web服务器故障,仍然可以保证网站的正常访问。

代码解析

upstream块定义了一组Web服务器的列表,即192.168.141.135和192.168.141.136,它们将被用作代理服务器的后端。
server块定义了监听80端口的HTTP服务器
location块配置了请求的URL路径以及如何代理请求
proxy_pass指令将请求转发给先前定义的upstream组
proxy_set_header指令用于设置HTTP请求头信息,包括原始主机名和真实IP地址,以及X-Forwarded-For头信息,以便Web服务器能够获取到实际客户端的IP地址。
if指令用于检查URI路径是否为静态文件类型,如果不是,则使用expires指令为响应设置一个缓存时间,从而提高性能

2.2TCP模块使用练习

1.配置文件(代理机)

stream {
    upstream backend {
        server 192.168.141.135:8080;
        server 192.168.141.136:8080;
    }
    server {
        listen 80;
        proxy_pass backend;
    }
}

2.配置文件(web服务器)

修改
listen 8080;

3.看起来和http使用差不多,那tcp有什么作用呢

	首先,TCP模块主要用于处理TCP协议的流量,可以实现TCP代理、负载均衡、流量控制等功能。它可以工作在传输层,能够直接处理TCP连接,比HTTP模块更为底层。因此TCP模块可以更高效地处理TCP连接,具有更高的吞吐量和更低的延迟。而HTTP模块需要对HTTP协议进行解析和处理,因此性能会稍差一些。也就是这样使用的时候可以更快
	其次,在配置方面,TCP模块需要配置的参数相对较少,比如upstream服务器列表、负载均衡策略、代理缓存等。而HTTP模块需要配置的参数较多,包括server、location、rewrite、access等指令,用于控制请求的转发、缓存、访问控制等。配置起来更简单
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值