Web服务器
Web服务器(Web Server)指的是用于支持**万维网(World Wide Web, WWW)*的服务器,也称为*HTTP服务器。它的主要功能是为网络信息浏览提供服务。
特点
- Web服务器是一种被动访问的服务程序: 只有在接收到互联网中其他主机发出的请求后,Web服务器才会响应并处理该请求。
- Web服务器通过HTTP或HTTPS协议将请求内容返回给客户端(如浏览器)。
- 客户端通过URL向服务器请求资源,服务器则根据请求提供静态资源(如HTML文件)或动态内容(通过后端脚本生成)。
以下是几种常见的Web服务器软件:
- Apache
- Nginx
- Lighttpd
- Tomcat
- IBM WebSphere
在线自动生成Nginx配置文件
https://www.digitalocean.com/community/tools/nginx?global.app.lang=zhCN
生成的nginx配置可以作为参考,贼好用
啥是Nginx

Nginx是由俄罗斯工程师Igor Sysoev开发的一款高性能的HTTP和反向代理服务器。
Nginx的特点:
高效的网络IO模型:
Nginx采用高效的事件驱动机制,如epoll(Linux)、kqueue(FreeBSD)和eventport(Solaris)。
这种架构使其在高并发场景下表现出色。
卓越的性能:
在默认配置下,Nginx可以轻松支持5万并发连接,并消耗极少的系统资源(内存和CPU)。
通过硬件优化、Linux内核调整以及Nginx配置参数的优化,甚至可以实现百万级并发连接的支持。
稳定性:
- Nginx以其稳定性著称,即使在高负载下运行也能保持流畅和可靠。
Nginx的核心功能:
Web服务器:
提供静态内容的托管(如HTML、CSS、JavaScript文件)。
支持动态内容的代理(如与后端应用程序配合使用)。
反向代理服务器:
用于分发请求到后端服务器,起到负载均衡的作用。
提供缓存功能,减少后端服务器的压力并提高访问速度。
企业用Nginx都干啥
提供静态页面展示和网页服务:
用于托管和快速分发静态资源文件(如HTML、CSS、JavaScript、图片等)。
以高效的性能支持大规模访问。
支持多个网站和多个域名的服务:
Nginx支持虚拟主机功能,可以通过同一台服务器为多个域名或网站提供服务。
适用于多站点托管需求。
反向代理和动态应用支持:
通过反向代理将请求分发到后端应用服务器(如Java、PHP、Node.js等),实现动态内容的访问。
提供负载均衡,优化后端服务器性能和资源利用。
文件下载和认证服务:
- 配置Nginx作为文件下载服务,支持简单的身份认证(如密码保护)。
- 可用作轻量级的FTP替代方案。
用户行为分析(日志功能):
Nginx记录详细的访问日志,包括访问时间、IP地址、请求路径、用户代理等。
企业可以基于这些日志进行用户行为分析和性能优化。
Nginx工作流程架构
Nginx是一个多进程架构,在启动后,它会创建一个Master进程,然后由Master进程进一步创建多个Worker进程。
- Master进程:
- 负责管理整个Nginx实例,包括加载配置、创建和终止Worker进程等。
- 不直接处理客户端请求,只是起到管理和分发的作用。
- Worker进程:
- 负责实际处理客户端请求。
- 每个Worker进程都可以独立地接收并响应HTTP请求。
- 通常每个Worker进程会绑定到一个CPU核心上,充分利用多核资源。
[root@iZ2zej10jlnefk7va4ms59Z ~]# ps -ef |grep nginx | grep -v grep
root 21487 1 0 May18 ? 00:00:00 nginx: master process nginx
root 26872 21487 0 May26 ? 00:00:30 nginx: worker process
Master主进程
在Nginx架构中,Master进程充当“包工头”,主要负责对整个Nginx实例进行管理和协调。Master进程并不直接处理客户端请求,而是负责启动、监控、分配和管理所有Worker进程。
Master进程主要作用:
验证配置文件:
启动时会检查配置文件(
nginx.conf
)的语法是否正确。如果配置文件存在错误,Master进程会报错并终止启动。
创建和监控Worker进程:
根据配置文件中的参数,Master进程创建多个Worker进程。
实时监控Worker进程的数量、状态及健康情况。
监听Socket并分发请求:
Master进程监听客户端发起的Socket请求。
当有请求到达时,Master会将请求分发给Worker进程。
Worker进程之间会进行**竞争连接的“抢夺”,**获胜的Worker会负责处理并响应请求。
处理管理信号:
Master进程可以接收运维人员发送的管理信号(如:
stop
、reload
)。将接收到的信号分发给Worker进程,从而实现对Worker进程的控制。
平滑重载配置:
- 当运维人员发送
reload
命令时:- Master进程会重新加载最新的配置文件。
- 它会创建新的Worker进程,同时优雅地终止旧的Worker进程,从而实现零中断配置更新。
- 当运维人员发送
Worker工作进程
Worker进程(Worker Process)——“实际操作工人”,在Nginx架构中,Worker进程负责真正处理客户端请求,它是Nginx中实际进行数据传输、请求响应的核心部分。每个Worker进程都可以独立地接收、处理并响应客户端的请求。
Worker进程主要作用:
处理客户端请求
Worker进程是Nginx的核心工作单元,直接与客户端交互。
它处理来自客户端的HTTP请求、TCP连接等。
在处理请求时,它可以访问静态资源、反向代理到其他后端服务器、执行动态内容解析等。
异步非阻塞IO操作
基于异步、非阻塞IO模型(如:epoll、kqueue等),Worker可以高效地处理大量并发请求。
当有多个请求同时到达时,Worker进程可以在等待数据的同时继续处理其他任务,从而实现高并发处理。
与Master进程交互
Master进程分配请求给Worker进程,而Worker进程通常会竞争连接。
如果Worker进程之间竞争失败,会由其他Worker继续处理。
Master进程负责监控Worker的健康状态,如果发现Worker异常,Master可以重新创建Worker进程。
数据转发与反向代理
当Nginx配置为反向代理服务器时,Worker会将请求转发到后端服务器。
它还可以实现负载均衡,将请求分布到多个后端节点,提高可用性。
缓存和优化
Worker进程可以对资源进行缓存(如:文件缓存、反向代理缓存)。
它还能执行请求的数据压缩、加密、访问控制等操作。
Nginx处理http请求


Nginx的安装形式
三种形式;
源代码编译安装
- 优点:
- 可以自由定义版本
- 可以在官网获取稳定版本,最新版本,甚至测试版本的软件包安装
- 可以自由定义安装路径
- 可以自由定义第三方插件
- 可以自由定义版本
- 缺点:
- 麻烦,耗时长
- 如果自定义第三方插件,时间会更长
- 优点:
rmp安装:一般用于离线的安装环境(不常用)
- 缺点:需要提前准备好nginx的rmp包,以及所需依赖的rpm包
yum安装,有几种形式的仓库可供使用
- nginx官网仓库(用这个)
- 第三方仓库,如阿里云
- 自建的yum仓库
https://juejin.cn/post/6986190222241464350 这安装教程,现成的
Nginx管理进程命令
nginx
:启动nginx,如果已经启动了,这命令会报错,如下图nginx -s reload
:给master进程发信息,重新读取配置文件,因此worker进程会重新生成,worker的pid也会发生变化,但master进程的pid不会变,如下图nginx -s stop
:停止nginx服务
Nginx配置文件详解
cat /opt/homebrew/etc/nginx/nginx.conf

基于Nginx部署一个网站
单虚拟主机
在nginx服务器上只托管一个网站
只需要在配置文件的http{}
中配置一个server{}
即可
在
nginx.conf
配置文件中导入我们自己添加的配置文件bashworker_processes 1; # 默认用户 events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8080; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } include servers/*; include /etc/nginx/conf.d/*.conf # include 导入该目录下的*.conf配置文件 }
创建虚拟主机子配置文件
# ip : huoying.linux0224.cc
# 把数据放在 /www/huoying/index.html
vim /etc/nginx/conf.d/huoying.linux0224.conf
# 写入如下信息
server{
listen 80;
# nginx 会匹配 http://huoying.linux0224.cc:80
server_name huoying.linux0224.cc;
location / {
# 根据root参数,填写网页根目录信息
# 表示当你访问 http://huoying.linux0224.cc:80, 会自动来这个目录下找数据
root /www/huoying/;
# 默认找 /www/huoying/ 的名字叫做index.html的文件
index index.html
}
}
外界大脑的配置文件dahong.conf
server{
listen 80;
server_name localhost; # server的名字,可以是域名,也可以是IP
gzip on;
gzip_static on;
gzip_min_length 1k;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 2;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_disable "MSIE [1-6]\.";
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/jpeg image/gif image/png image/svg+xml;
add_header Cache-Control "max-age=31536000,immutable";
location / {
try_files $uri $uri/ @rewrites;
root /hongBrain/dist; # 根据root信息填写的网络根目录信息,默认找这里的index.html文件
index index.html;
autoindex on;
}
location @rewrites {
rewrite ^.*$ /index.html last;
}
}