一文讲懂Nginx常用配置及和基本功能

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 一文讲懂Nginx常用配置及和基本功能

1. 什么是Nginx

Nginx(发音同engine x)是一款轻量级的Web服务器、反向代理服务器和负载均衡器,由俄罗斯程序员Igor Sysoev开发。Nginx的设计目标是高性能、高并发、高可靠、低资源消耗,可以作为Web服务器、反向代理服务器和负载均衡器使用。Nginx现已成为Internet上访问量最大的网站之一,据统计,截至2023年5月份,Nginx在全球占据了39%的市场份额。

2. Nginx的基本功能

Nginx作为Web服务器,主要提供以下基本功能:

2.1 静态文件处理

Nginx可以将静态文件(例如HTML、CSS、JavaScript等)直接返回给客户端,而不需要调用后端应用服务器处理。这样可以减轻后端服务器的负担,提高系统的吞吐量。

2.2 CGI脚本支持

Nginx也支持CGI脚本的执行,当请求需要调用CGI脚本时,Nginx会将请求传递给后端的CGI进程,在CGI脚本的帮助下生成响应结果。

2.3 反向代理

Nginx可以作为反向代理服务器,将客户端的请求转发到后端应用服务器进行处理,并将处理结果返回给客户端。这样可以隐藏后端应用服务器的真实IP地址,提高系统安全性。

2.4 负载均衡

Nginx可以作为负载均衡器,将客户端的请求分摊到多台后端应用服务器上,提高系统的吞吐量和可靠性。

2.5 SSL/TLS支持

Nginx支持SSL/TLS协议,可以对客户端和服务器之间的通信进行加密和解密操作,提高系统的安全性。

3. Nginx常用配置

3.1 配置文件结构

Nginx的配置文件是文本文件,通常位于/etc/nginx/目录下。配置文件由一系列指令组成,每条指令都有自己的语法格式和作用。Nginx的配置文件结构如下:

user nginx;         # 指定运行Nginx的用户和用户组
worker_processes auto;   # 指定工作进程数量
error_log /var/log/nginx/error.log; # 指定错误日志文件路径
pid /run/nginx.pid;     # 指定PID文件路径
events {
   
    worker_connections 1024;   # 指定最大连接数
}
http {
   
    include /etc/nginx/mime.types;  # 加载mime.types文件
    default_type application/octet-stream; # 默认MIME类型
    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 on;      # 启用sendfile功能,加快文件传输速度
    tcp_nopush on;    # 启用TCP_NOPUSH选项,减少网络传输次数
    keepalive_timeout 65;  # keep-alive超时时间
    server {
   
        listen 80 default_server; # 监听端口80
        server_name localhost;    # 指定虚拟主机名称
        location / {
   
            root /usr/share/nginx/html; # 指定网站根目录
            index index.html;    # 默认首页文件名
        }
        error_page 404 /404.html;  # 指定404错误页面
        location /404.html {
   
            internal;       # 禁止外部直接访问此页面
        }
    }
}

3.2 指令详解

  • user:指定Nginx运行的用户和用户组。
  • worker_processes:指定工作进程数量,通常设置为CPU核心数的1-2倍。
  • error_log:指定错误日志文件路径。
  • pid:指定PID文件路径。
  • events.worker_connections:指定最大连接数。
  • http.include:加载mime.types文件。该文件中包含了多种MIME类型及其对应的文件扩展名。
  • http.default_type:默认MIME类型。当客户端没有提供Accept头部或者请求的文件类型在mime.types文件中未找到时,将使用该类型作为默认类型。
  • http.log_format:指定日志格式,常用选项有$remote_addr(客户端IP地址)、$time_local(本地时间)、$request(请求信息)、$status(响应状态码)等。
  • http.access_log:指定访问日志文件路径和格式。
  • http.sendfile:启用sendfile功能,加快文件传输速度。
  • http.tcp_nopush:启用TCP_NOPUSH选项,减少网络传输次数。
  • http.keepalive_timeout:keep-alive超时时间,用于控制客户端与服务器之间的连接保持时间。
  • server.listen:监听端口。
  • server.server_name:指定虚拟主机名称。
  • location:根据请求URI匹配指定的操作,常用选项有root(指定网站根目录)、index(默认首页文件名)等。
  • error_page:指定错误页面,常用选项有404(文件未找到)、500(服务器内部错误)等。
  • location.internal:禁止外部直接访问此页面。

4. Nginx的性能优化

4.1 启用缓存

在Nginx中启用缓存可以将静态文件暂存在服务器的内存中,当客户端再次请求相同的文件时,Nginx可以直接从缓存中读取文件并返回给客户端。这样可以减少后端应用服务器的负担,提高系统的吞吐量。

4.2 使用gzip压缩

Nginx支持使用gzip对文本文件进行压缩,可以减小文件的传输大小,提高传输效率。压缩比例可通过配置控制,建议使用较高的压缩比例。

4.3 配置HTTP/2协议

Nginx支持HTTP/2协议,该协议可以在一个连接上同时传输多个请求和响应,减少了网络延迟,提高了传输效率,建议启用该协议以提升系统性能。

4.4 启用TCP_FASTOPEN选项

TCP_FASTOPEN是一种TCP扩展选项,可以减少网络延迟,据测试,启用TCP_FASTOPEN选项可以将TCP连接建立时间降低约30%左右,建议启用该选项。

4.5 调整文件描述符限制

在高并发场景中,Nginx需要打开大量的文件描述符来处理请求,因此建议调整系统文件描述符限制。可以通过修改/etc/security/limits.conf文件或/etc/sysctl.conf文件来实现。

5. 总结

本文介绍了Nginx的基本功能和常用配置,包括静态文件处理、CGI脚本支持、反向代理、负载均衡、SSL/TLS支持等。同时,对Nginx的性能优化进行了详细的讲解,包括启用缓存、使用gzip压缩、配置HTTP/2协议、启用TCP_FASTOPEN选项和调整文件描述符限制等。通过学习本文,读者可以了解Nginx的常用功能和优化方法,为实际应用场景提供参考。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
16天前
|
应用服务中间件 BI nginx
Nginx的location配置详解
【10月更文挑战第16天】Nginx的location配置详解
|
23天前
|
缓存 负载均衡 安全
Nginx常用基本配置总结:从入门到实战的全方位指南
Nginx常用基本配置总结:从入门到实战的全方位指南
214 0
|
9天前
|
应用服务中间件 API nginx
nginx配置反向代理404问题
【10月更文挑战第18天】本文介绍了使用Nginx进行反向代理的配置方法,解决了404错误、跨域问题和302重定向问题。关键配置包括代理路径、请求头设置、跨域头添加以及端口转发设置。通过调整`proxy_set_header`和添加必要的HTTP头,实现了稳定的服务代理和跨域访问。
nginx配置反向代理404问题
|
3天前
|
应用服务中间件 网络安全 PHP
八个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
Nginx 是一个高效的 HTTP 服务器和反向代理,擅长处理静态资源、负载均衡和网关代理等任务。其配置主要通过 `nginx.conf` 文件完成,但复杂设置可能导致错误。本文介绍了几个开源的 Nginx 可视化配置系统,如 Nginx UI、VeryNginx、OpenPanel、Ajenti、Schenkd nginx-ui、EasyEngine、CapRover 和 NGINX Agent,帮助简化和安全地管理 Nginx 实例。
|
13天前
|
缓存 负载均衡 应用服务中间件
Nginx配置
【10月更文挑战第22天】在实际配置 Nginx 时,需要根据具体的需求和环境进行调整和优化。同时,还需要注意配置文件的语法正确性和安全性。
33 7
|
22天前
|
前端开发 JavaScript 应用服务中间件
终极 Nginx 配置指南
本文介绍了Nginx的基本配置及其优化方法。首先,通过删除注释简化了Nginx的默认配置文件,使其更易于理解。接着,文章将Nginx配置文件分为全局块、events块和http块三部分进行详细解释。此外,还提供了如何快速上线网站、解决前端history模式404问题、配置反向代理、开启gzip压缩、设置维护页面、在同一IP上部署多个网站以及实现动静分离的具体配置示例。最后,附上了Nginx的基础命令,包括安装、启动、重启和关闭等操作。
|
26天前
|
负载均衡 应用服务中间件 nginx
Nginx的6大负载均衡策略及权重轮询手写配置
【10月更文挑战第9天】 Nginx是一款高性能的HTTP服务器和反向代理服务器,它在处理大量并发请求时表现出色。Nginx的负载均衡功能可以将请求分发到多个服务器,提高网站的吞吐量和可靠性。以下是Nginx支持的6大负载均衡策略:
113 7
|
24天前
|
缓存 前端开发 JavaScript
一、nginx配置
一、nginx配置
131 1
|
23天前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
118 0
|
26天前
|
缓存 监控 负载均衡
nginx相关配置及高并发优化
Nginx的高并发优化是一个综合性的过程,需要根据具体的业务场景和硬件资源量身定制。以上配置只是基础,实际应用中还需根据服务器监控数据进行持续调整和优化。例如,利用工具如ab(Apache Benchmarks)进行压力测试,监控CPU、内存、网络和磁盘I/O等资源使用情况,确保配置的有效性和服务的稳定性。
95 0