Nginx | 青训营笔记

97 阅读4分钟

Nginx是一个高性能的Web服务器和反向代理服务器,它可以处理静态和动态的内容,支持多种协议和负载均衡。Nginx的设计目标是提供高并发、低内存占用和高可扩展性的服务。

安装和配置

  1. 安装依赖包,如gcc, zlib, pcre, openssl等,可以使用命令yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
  2. 下载Nginx的源码包,可以从官网https://nginx.org/en/download.html选择合适的版本,如nginx-1.16.1.tar.gz
  3. 解压源码包到指定目录,如/usr/local/java,可以使用命令tar -zxvf nginx-1.16.1.tar.gz -C /usr/local/java
  4. 进入解压后的目录,如/usr/local/java/nginx-1.16.1,执行命令./configure来创建Makefile文件。
  5. 执行命令make && make install²来编译和安装Nginx。
  6. 进入安装后的目录,如/usr/local/nginx/sbin,执行命令./nginx来启动Nginx。
  7. 配置防火墙放行Nginx的默认端口80,可以使用命令/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT /etc/rc.d/init.d/iptables save或者关闭防火墙。
  8. 访问Nginx的IP地址,如192.168.32.41:80,如果出现Welcome to nginx!表示成功。

Nginx的配置文件是在/usr/local/nginx/conf/nginx.conf,可以根据需要修改其中的参数,如server_name, root, index, location等。修改后需要重新加载Nginx的配置文件,可以使用命令./nginx -s reload

主要特点:

  • 基于事件驱动的架构,可以有效地处理数以万计的并发连接。
  • 轻量级的进程模型,可以根据系统资源自动调整工作进程的数量。
  • 支持HTTP、HTTPS、SMTP、POP3、IMAP等协议,可以作为Web服务器、邮件服务器或代理服务器使用。
  • 支持反向代理、缓存、压缩、分段传输等功能,可以提高后端服务器的性能和稳定性。
  • 支持模块化的配置,可以灵活地定制不同的虚拟主机和位置。
  • 支持第三方模块,可以扩展Nginx的功能和特性。

原理

Nginx的原理是基于事件驱动和异步非阻塞的模型,它由一个主进程和多个工作进程组成。主进程负责管理工作进程,如启动、停止、重载配置等。工作进程负责处理客户端的请求,如接收、处理、转发、响应等。

Nginx使用了epoll机制来实现高效的事件处理,它可以在一个工作进程中同时处理多个连接,而不需要创建多个线程或进程。Nginx还使用了sendfile系统调用来实现高速的文件传输,它可以直接将文件从磁盘发送到网络,而不需要经过用户空间的拷贝。

Nginx的功能包括:

  • 反向代理:Nginx可以将客户端的请求转发给后端的服务器,并将响应返回给客户端,实现负载均衡和故障转移¹²。
  • 动静分离:Nginx可以根据请求的路径或类型,将静态资源和动态资源分别由不同的服务器来处理,提高响应速度和减轻后端服务器的压力²。
  • 缓存:Nginx可以缓存后端服务器的响应内容,如图片、网页、文件等,减少与后端服务器的交互,提高访问效率²。
  • SSL/TLS加密:Nginx可以提供SSL/TLS加密服务,保证数据的安全传输²。
  • WebSocket服务:Nginx可以支持WebSocket协议,实现双向通信²。

应用场景:

  • 静态内容服务:Nginx可以快速地处理静态文件,如HTML、CSS、JS、图片等,减轻后端服务器的压力。
  • 动态内容服务:Nginx可以与FastCGI、uWSGI等接口协作,将动态请求转发给后端应用服务器,如PHP、Python、Ruby等。
  • 反向代理服务:Nginx可以作为反向代理服务器,将客户端的请求转发给后端服务器,并将响应返回给客户端,实现负载均衡和故障转移。
  • SSL/TLS加密服务:Nginx可以提供SSL/TLS加密服务,保证数据的安全传输。
  • WebSocket服务:Nginx可以支持WebSocket协议,实现双向通信。

总之,Nginx是一个功能强大、性能优异、配置灵活的Web服务器和反向代理服务器,它可以满足不同的网络服务需求。如果你想了解更多关于Nginx的信息,请访问官方网站或者参考文档。

nginx.org/

nginx.org/en/docs/