Nginx的简介与部署

Nginx简介

Nginx是一款高性能的HTTP和反向代理Web服务器,同时也是一个IMAP/POP3/SMTP代理服务器。它由俄罗斯人伊戈尔·赛索耶夫开发,旨在为Rambler.ru站点提供高效、稳定的服务。Nginx因其稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而备受赞誉。

特点

  1. 跨平台:Nginx可以在大多数Unix-like操作系统上编译运行,并且也有Windows的移植版本,具有良好的跨平台兼容性。
  2. 配置简单:Nginx的配置风格与程序开发相似,使得配置变得非常容易上手。
    非阻塞、高并发连接:Nginx使用最新的epoll模型,能够支撑高达5万的并发连接,并在实际生产环境中表现出色,通常可以处理2~3万的并发连接数。
  3. 事件驱动:Nginx的通信机制采用epoll模型,支持更大的并发连接。
    master/worker结构:Nginx采用一个master进程生成一个或多个worker进程的模式,提高了处理效率。
  4. 内存消耗小:在处理大并发的请求时,Nginx的内存消耗非常小。
  5. 节省带宽:Nginx支持GZIP压缩,可以添加浏览器本地缓存的Header头,有助于节省带宽。

优缺点

Nginx的优缺点分别如下:

优点:

  1. 高性能:Nginx使用事件驱动架构,能够处理大量并发连接,适用于高负载场景。其异步非阻塞的工作方式使得其处理请求无需等待,从而提高了服务器的吞吐能力。
  2. 稳定性好:Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器,具有高可用性和可扩展性,被广泛应用于大型网站和应用中。
  3. 配置简单:Nginx的配置文件简洁明了,易于理解和修改。它支持多种配置语法,包括基于位置、基于域名、基于正则表达式等,可以灵活地满足不同的需求。
  4. 模块化设计:Nginx采用模块化设计,支持丰富的模块和插件生态系统,可以扩展其功能和性能,满足各种不同的需求。
  5. 支持热部署:Nginx支持热部署,可以在不停止服务的情况下更新配置文件或升级Nginx版本,方便维护和升级。
  6. 内存消耗小:Nginx在处理大量并发连接时,内存消耗相对较小,这使得它能够在有限的资源下提供更高的性能。

缺点:

  1. 仅支持HTTP、HTTPS和Email协议,不支持其他应用层协议,如FTP等。这使得Nginx的应用场景受到一定的限制。
  2. 动态处理能力相对较弱:虽然Nginx可以通过FastCGI等方式与后端应用服务器进行通信,但相对于专业的应用服务器如Tomcat、Resin等,其动态处理能力相对较弱。
  3. 调试困难:Nginx的错误日志相对简单,对于复杂的故障排查和调试可能不够方便。
  4. 学习成本高:虽然Nginx的配置文件简洁明了,但对于初学者来说,理解其工作原理和配置方式可能需要一定的时间和经验积累。
  5. 控制功能相对较少:Nginx的控制功能相对较少,例如对于访问控制、安全策略等方面的支持不如专业的Web应用防火墙或负载均衡器强大。

需要注意的是,以上优缺点是基于Nginx的一般特性和应用场景进行描述的,具体使用时还需根据实际需求和环境进行评估。同时,随着Nginx版本的不断更新和发展,其功能和性能也在不断改进和提升。

应用场景

Nginx的应用场景非常广泛,包括但不限于以下几个方面:

  1. 静态文件服务:Nginx在提供静态资源服务方面效率很高,可以快速响应大量的静态请求,减轻其他动态服务器的负担,如CSS、JavaScript、Image、Audio和Video文件等。
  2. 反向代理和负载均衡:Nginx可以作为反向代理服务器,通过优化请求的分配和处理方式,平均分配后端服务器的负载,提高系统的可用性和可靠性,使其更稳定。
  3. 缓存服务器:Nginx可以缓存一些响应结果,降低后端服务器的负载,提高数据的访问速度,平衡访问压力等。
  4. SSL加速:Nginx可以通过HTTPS访问加速,提高HTTPS访问的性能,减少SSL负载压力,保证数据的安全性。
  5. WebSocket:Nginx支持WebSocket协议,可用于实时通信应用程序。
  6. 访问控制和安全:Nginx可以使用访问控制、基于IP地址的访问限制等来提高服务器的安全性,有效保护

总之,Nginx是一款非常稳定、高效的Web服务器和反向代理服务器,适用于大型高并发网站、在线视频、物联网、云计算等场景。其特点包括跨平台、配置简单、非阻塞、高并发连接、事件驱动、master/worker结构、内存消耗小、节省带宽等。同时,Nginx在静态文件服务、反向代理和负载均衡、缓存服务器、SSL加速、WebSocket、访问控制和安全等方面都有广泛的应用。


安装与部署

Nginx官网
yum安装

[root@nginx-71 ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

源码安装

# 打开所要安装的目录
cd /usr/local
# 安装依赖包:
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
# 下载 nginx 安装包
wget http://nginx.org/download/nginx-1.24.0.tar.gz

# 解压安装包
tar -xvf nginx-1.24.0.tar.gz

make clean

# 解压完成后,进入 nginx 下的目录
mv /usr/local/nginx-1.24.0 /usr/local/nginx
cd /usr/local/nginx

# 执行 configure 命令生成 MakeFile 文件,[options] 配置项可忽略
./configure  --prefix=/usr/local/nginx  --with-http_ssl_module --with-http_auth_request_module --with-http_random_index_module 

# 执行 make 命令
make -j2

# 执行安装命令
make install

# 查看是否安装完成(查看是否有 nginx 进程)
ps -ef | grep nginx

# 在当前目录下验证 nginx 配置文件是否正确
./nginx -t

# 在当前目录下启动 nginx 服务
./nginx -c  /usr/local/nginx/conf/nginx.conf

# 在当前目录下重启 nginx 服务(可能存在 nginx.pid 报错的问题,可参考百度结果)
./nginx -s reload

# 启动成功后再次查看 nginx 进程
ps -ef | grep nginx


Nginx的配置文件

Nginx的默认配置文件

[root@nginx-71 ~]# cat /etc/nginx/nginx.conf
#运行nginx进程的用户是nginx
user  nginx;
#设置nginx的工作进程数,auto表示nginx会自动检测并使用可用的CPU核心数
worker_processes  auto;
#设置错误日志的路径以及日志级别
error_log  /var/log/nginx/error.log notice;
#指定nginx主进程的pid(进程id)文件存放的位置
pid        /var/run/nginx.pid;

#定义事件模块的设置,这里设置了每个工作进程可以同时处理最大连接数为1024
events {
    worker_connections  1024;
}

#定义HTTP模块的设置
http {
    include       /etc/nginx/mime.types;  #包含MIME类型的定义文件
    default_type  application/octet-stream;  #默认的MIME类型

#定义了一个名为main的日志格式,这个是包含了各种请求和响应的详细信息
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

#指定访问的日志路径和使用日志的格式
    access_log  /var/log/nginx/access.log  main;
#启用sendfile功能,可以高效发送文件
    sendfile        on;
    #tcp_nopush     on;
#设置长连接的超时时间
    keepalive_timeout  65;

    #gzip  on;  启用压缩
#包含 /etc/nginx/conf.d/ 目录下所有 .conf 结尾的配置文件
    include /etc/nginx/conf.d/*.conf;
}

Nginx的子配置文件

这里简单举例说明

server {  
#监听端口
    listen 80; 
#两个域名
    server_name example.com www.example.com;  
#root 指令指定了文档根目录,即网站文件存放的位置  
    root /var/www/example.com;  
#index 指令定义了当请求指向一个目录而非具体文件时,服务器默认返回的文件
    index index.html index.htm;  
#location / 块定义了如何处理根路径的请求。在这里,它尝试返回请求的文件,如果文件不存在,则尝试返回目录下的 index.html 文件  
    location / {  
        try_files $uri $uri/ /index.html;  
    }  
#location /images/ 块定义了一个别名,它将 /images/ 路径的请求映射到 /path/to/images/ 目录下的实际文件,并且设置了图片文件的缓存过期时间为30天 
    location /images/ {  
        alias /path/to/images/;  
        expires 30d;  
    }  

#location /api/ 块则是一个反向代理配置,它将所有到 /api/ 路径的请求转发到 backend_server_address 指定的后端服务器  
    location /api/ {  
        proxy_pass http://backend_server_address;  
        proxy_set_header Host $host;  
        proxy_set_header X-Real-IP $remote_addr;  
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
    }  

#error_page 块定义了当发生特定HTTP错误时,服务器应返回的错误页面  
    error_page 404 /404.html;  
    error_page 500 502 503 504 /50x.html;  

#location = /50x.html 块定义了当发生500系列错误时,服务器应从哪里找到对应的错误页面  
    location = /50x.html {  
        root /var/www/example.com;  
    }  
}

在这个例子中,server 块定义了一个虚拟主机,它监听80端口,并且响应 example.com 和 www.example.com 这两个域名。
这只是一个简单的例子,实际的子配置文件可能会更加复杂,并且包含更多的配置选项和指令。

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值