网站的默认首页,网站建设行业市场分析,wordpress 人体时钟,网站的网页声明怎么做一、基础核心问题
原文链接#xff1a;https://blog.csdn.net/weixin_51146329/article/details/142963853
1、什么是Nginx#xff1f;
Nginx 是一个高性能的 HTTP 和反向代理服务器#xff0c;它以轻量级和高并发处理能力而闻名。Nginx 的反向代理功能允许它作为前端服务…一、基础核心问题
原文链接https://blog.csdn.net/weixin_51146329/article/details/142963853
1、什么是Nginx
Nginx 是一个高性能的 HTTP 和反向代理服务器它以轻量级和高并发处理能力而闻名。Nginx 的反向代理功能允许它作为前端服务器接收客户端的请求并将它们转发到后端服务器这样可以隐藏后端服务器的细节提高安全性Nginx 也能够作为负载均衡器将流量分配到多个后端服务器这样可以提高网站的可用性和扩展性。Nginx 还支持静态文件服务由于其高效的文件处理能力它经常被用来作为静态资源的服务器如图片、CSS 和 JavaScript 文件等2. Nginx的特点和优势是什么
Nginx 是一个高性能的 HTTP 和反向代理服务器具有以下特点和优势 高并发处理Nginx 使用异步非阻塞 I/O 模型如 epoll 在 Linux 系统中这使得它可以高效地处理大量并发连接。每个 Worker 进程可以处理数千个并发连接而不消耗过多资源 低内存消耗由于其轻量级的设计Nginx 占用的系统资源相对较少即使在处理数万并发连接时也能保持较低的内存占用 ty-reference。 反向代理与负载均衡Nginx 提供了强大的反向代理功能并且支持多种负载均衡算法比如轮询、加权轮询、IP Hash 等能够有效地分散流量并提高服务可用性 热部署Nginx 支持平滑重启nginx -s reload可以在不中断现有服务的情况下加载新的配置文件或升级到新版本 模块化设计Nginx 的核心功能是通过一系列独立的模块实现的这些模块可以根据需要进行编译加载从而提供了高度的灵活性
3. Nginx的Master-Worker进程模型是如何工作的
Nginx 采用了一种称为 Master-Worker 的架构来管理请求处理流程 Master 进程作为主控进程它负责读取和验证配置文件、绑定端口以及启动和监控 Worker 进程。此外Master 还能响应来自管理员的操作指令例如重新加载配置或者优雅地关闭服务 Worker 进程由 Master 创建的多个 Worker 进程实际负责处理客户端请求。每个 Worker 都是一个单线程进程利用事件驱动机制处理网络I/O操作。通常情况下Worker 的数量设置为 CPU 核心数以最大化硬件利用率
4、Nginx怎么处理请求的
1、接收请求当客户端发送一个 HTTP 请求到 Nginx 时Nginx 的工作进程或线程会接收这个请求。
2、匹配 Server 和 LocationNginx 会根据请求的域名和 URI 匹配相应的 server 块和 location 块。这是通过 listen 和 server_name 指令匹配 server 模块再匹配 server 模块里的 location 实现的。
3、处理请求一旦匹配到相应的 location 块Nginx 就会根据该块中的配置处理请求。这可能涉及到静态文件服务、代理请求到后端服务器、重定向、返回错误页面等操作。
4、响应客户端处理完请求后Nginx 会生成一个响应并发送回客户端。5. 正向代理 vs 反向代理的区别Nginx属于哪种 正向代理代理服务器位于客户端与目标服务器之间。客户端通过代理服务器向目标服务器发送请求。目标服务器只能看到代理服务器的 IP 地址而看不到客户端的真实 IP 地址。正向代理通常用于客户端访问互联网时通过代理服务器来访问外部资源这可以提高安全性和隐私保护。 反向代理反向代理位于客户端和目标服务器之间但与正向代理不同客户端通常不知道反向代理的存在。反向代理隐藏了后端的真实服务器对外表现为单一入口点。客户端无需知道后端的具体结构所有请求都直接发送给反向代理服务器。后端服务器处理请求并将响应返回给反向代理服务器反向代理服务器再将响应返回给客户端。
Nginx 主要用于反向代理场景但也可以通过特定配置实现正向代理功能
6、使用“反向代理服务器”的优点是什么
隐藏服务器反向代理服务器可以隐藏后端服务器的存在和特征这有助于提高安全性因为外部用户无法直接访问后端服务器。负载均衡反向代理可以作为负载均衡器将流量分配到多个后端服务器这样可以提高网站的可用性和扩展性。缓存静态内容反向代理服务器可以缓存静态内容如图片、CSS 和 JavaScript 文件等这样可以减少后端服务器的负载并提高响应速度。SSL 终端反向代理服务器可以处理 SSL/TLS 加密这样可以减轻后端服务器的加密负担。
7、Nginx的优缺点
优点
高性能和高并发Nginx 能够处理大量的并发连接而内存消耗相对较小这使得它在高流量场景下表现出色。静态文件处理Nginx 在处理静态文件方面非常高效它能够快速地提供图片、CSS、JavaScript 等静态资源。负载均衡Nginx 可以作为负载均衡器将流量分配到多个后端服务器这样可以提高网站的可用性和扩展性。动态处理能力Nginx 在处理动态内容方面相对较弱它更适合作为静态资源的服务器和反向代理。对于需要复杂动态处理的应用可能需要与其他应用服务器如 PHP、Node.js配合使用。
8、Nginx应用场景
HTTP 服务器Nginx 可以作为 HTTP 服务器独立提供 HTTP 服务适用于静态网站托管。反向代理和负载均衡Nginx 可以作为反向代理服务器将请求转发到后端服务器并支持负载均衡这对于高流量网站和应用来说非常重要。API 网关Nginx 可以配置为 API 网关对每个接口服务进行拦截和路由提供额外的安全层和流量控制。邮件代理Nginx 还可以作为邮件代理服务器处理邮件传输。
9、Nginx配置文件nginx.conf有哪些属性模块?
events定义了事件处理的配置如工作连接数 worker_connections。
http定义了 HTTP 服务器的配置包括文件类型、默认类型、连接超时等。
server定义了虚拟主机的配置可以包含多个 server 块每个块定义了一个虚拟主机的设置。
location定义了请求的匹配和处理规则可以根据 URI、正则表达式等匹配请求并指定处理方式。
upstream定义了负载均衡的配置可以指定多个后端服务器并设置负载均衡策略。10、如何用Nginx解决前端跨域问题
Nginx 可以通过配置 CORS跨源资源共享头部来解决前端跨域问题。以下是配置 CORS 的步骤
在 server 或 location 块中使用 add_header 指令添加 Access-Control-Allow-Origin 头部指定允许访问的源。
如果需要还可以添加 Access-Control-Allow-Methods 头部指定允许的 HTTP 方法。
对于需要凭证的请求可以添加 Access-Control-Allow-Credentials 头部。
11、Nginx虚拟主机怎么配置?
在 Nginx 中配置虚拟主机主要涉及 server 块的设置。以下是配置虚拟主机的步骤定义 server 块每个 server 块定义了一个虚拟主机的配置。
设置监听端口使用 listen 指令设置服务器监听的端口通常是 80HTTP和 443HTTPS。
设置服务器名称使用 server_name 指令设置虚拟主机的域名。
定义 location 块在 server 块内部定义 location 块设置请求的处理规则。
设置根目录使用 root 指令设置网站内容的根目录。
设置默认首页使用 index 指令设置默认首页文件。12、location的作用是什么
location 指令在 Nginx 配置中扮演着核心角色它定义了如何处理进入 Nginx 的 HTTP 请求。location 块可以匹配不同的 URI、正则表达式或指定的字符串从而允许对特定的请求路径应用不同的处理规则。精确匹配使用 符号进行精确匹配例如 location / 匹配根路径。
字符串开头匹配使用 ^~ 符号匹配以特定字符串开头的 URI。
正则表达式匹配使用 ~ 或 ~* 符号进行正则表达式匹配其中 ~ 是区分大小写的而 ~* 是不区分大小写的。
通用匹配使用 / 符号进行通用匹配作为最后的选择如果其他匹配都未成功请求将被这个 location 块处理。13. 如何配置Nginx实现负载均衡常见的算法有哪些
Nginx 支持多种负载均衡策略包括但不限于
轮询Round Robin默认方式依次分配请求到各后端服务器 ty-reference。加权轮询Weighted Round Robin根据权重分配请求权重越大分配比例越高 ty-reference。IP Hash基于客户端 IP 地址的哈希值分配请求保证同一客户端总是被定向到同一台后端服务器 ty-reference。最小连接数Least Connections将请求分发给当前连接数最少的服务器 ty-reference。
二、配置与调优
14. location匹配规则优先级、^、、~*、无符号
Nginx 的 location 匹配遵循特定顺序
精确匹配只有完全匹配路径才会生效。^~前缀匹配一旦匹配成功则不再尝试正则表达式匹配。~ 或 ~*区分大小写的正则匹配和不区分大小写的正则匹配。普通前缀匹配最长前缀匹配原则
15. 如何实现URL重写rewrite举例说明
Nginx 的 rewrite 指令允许你修改请求 URI常用于 URL 重定向或内部转发
server {rewrite ^/old-page/(.*)$ /new-page/$1 permanent; # 301永久重定向rewrite ^/user/(\d)$ /user/profile?id$1 last; # 内部转发
}16. 如何限制Nginx的并发连接数
http {# 定义限制区域以客户端IP为键分配10MB内存存储状态limit_conn_zone $binary_remote_addr zoneaddr:10m;server {location / {# 每个IP同时最多允许100个连接limit_conn addr 100;# 超出限制返回503错误limit_conn_status 503;}}
}17. 如何配置HTTPSSSL证书如何加载
server {listen 443 ssl;server_name example.com;# SSL证书路径PEM格式ssl_certificate /etc/nginx/ssl/example.com.crt;ssl_certificate_key /etc/nginx/ssl/example.com.key;# 优化SSL配置ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;
}18、Nginx配置高可用性怎么配置
配置 Nginx 以实现高可用性主要涉及确保 Nginx 能够处理后端服务器的故障并在必要时将流量重定向到健康的服务器。以下是一些关键的配置步骤定义多个后端服务器在 upstream 块中定义多个服务器以便在一个服务器失败时有备用服务器可用。
设置超时参数配置 proxy_connect_timeout、proxy_send_timeout 和 proxy_read_timeout 指令以便在后端服务器无响应时及时失败转移。
使用 max_fails 和 fail_timeout配置 max_fails 指令来设置在多长时间内允许多少次失败以及 fail_timeout 指令来设置服务器失败后应该被排除在外的时间。
三、故障排查与性能优化
19. Nginx的access_log和error_log的作用是什么如何分析日志
access_log记录客户端请求信息如 IP、时间、请求方法、状态码、响应大小。示例日志格式192.168.1.1 - - [10/Oct/2023:14:30:01 0800] GET /index.html HTTP/1.1 200 612 - Mozilla/5.0常用分析命令
error_log记录 Nginx 运行时的错误信息如配置错误、后端超时、权限问题。日志级别debug | info | notice | warn | error | crit默认 error。# 实时查看访问日志
tail -f /var/log/nginx/access.log# 统计状态码为502的请求
grep 502 /var/log/nginx/access.log | awk {print $1, $7}# 查找错误日志中的超时错误
grep upstream timed out /var/log/nginx/error.log20. 502 Bad Gateway错误可能的原因如何排查
可能原因后端服务未启动或崩溃。反向代理配置错误如后端地址错误、端口未监听。后端服务处理超时Nginx 的 proxy_read_timeout 设置过短。防火墙或网络问题导致 Nginx 无法连接后端。排查步骤检查Nginx error_loggrep 502 /var/log/nginx/error.log。验证后端服务状态curl -v http://backend-server:port。检查网络连通性telnet backend-server port 或 nc -zv backend-server port。四、底层原理加分项
21. Nginx为什么比Apache更适合高并发场景
架构模型Apache多进程/多线程模型如 prefork、worker每个连接占用一个线程资源消耗高。Nginx事件驱动 异步非阻塞模型单个 Worker 处理数千连接资源占用低。内存消耗Apache每个连接约消耗 2MB~8MB 内存。Nginx每个连接约消耗 2.5KB 内存。22. 什么是惊群问题Thundering HerdNginx如何解决
问题描述多个进程/线程同时监听同一端口当新连接到达时所有进程被唤醒竞争资源导致 CPU 资源浪费。Nginx 解决方案使用 accept_mutex 锁默认开启同一时间只有一个 Worker 进程监听端口。当有新连接时获得锁的 Worker 处理连接其他 Worker 继续处理现有请求。五、实战场景
23. 如何用Nginx实现动静分离
server {# 静态资源图片、CSS、JSlocation ~* \.(jpg|png|css|js)$ {root /data/static;expires 30d; # 客户端缓存30天access_log off; # 关闭日志减少磁盘IO}# 动态请求APIlocation /api {proxy_pass http://backend_server;proxy_set_header Host $host;}
}24. 如何限制某个IP的访问频率
http {# 定义限流区域每秒10个请求10r/s突发允许20个请求limit_req_zone $binary_remote_addr zoneip_limit:10m rate10r/s;server {location / {limit_req zoneip_limit burst20 nodelay;# nodelay表示突发请求立即处理不延迟}}
}六、扩展问题
25. Nginx如何实现热部署Reload
流程执行 nginx -s reload 向 Master 进程发送 SIGHUP 信号。Master 检查新配置文件语法是否正确。若配置正确启动新的 Worker 进程并逐步关闭旧的 Worker。旧 Worker 处理完当前请求后退出实现无缝切换。