初识Nginx
Nginx
是一款高性能的 HTTP 和反向代理服务器,同时也具备电子邮件(IMAP/POP3)代理服务等功能。 它具有诸多显著特点和优势。在性能方面,能够高效地处理大量并发连接,内存和 CPU 资源占用相对较低,可快速响应客户端请求,提供稳定的服务。在功能上,其反向代理功能可以隐藏后端真实服务器的 IP 地址,起到安全防护和负载均衡的作用,将客户端请求均匀分发到多台后端服务器上,以平衡各服务器的负载压力,提高整体系统的可用性和扩展性。它还支持 URL 重写、缓存静态资源等功能,可有效提升网站的访问速度和用户体验。在架构设计上,采用模块化设计,易于扩展和定制,可根据不同的应用场景和需求灵活配置各种模块,以满足多样化的业务要求。Nginx 在构建大规模、高并发、高可用的网络应用架构中扮演着极为重要的角色,被广泛应用于众多互联网企业的生产环境中。
Nginx的常见作用
Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。
正向代理
正向代理是位于客户端和目标服务器之间的代理服务器。它代理的是客户端,简单来说,客户端通过正向代理服务器来访问目标服务器。在这个过程中,目标服务器看到的请求来源是代理服务器的IP地址,而不是客户端的真实IP地址。
工作流程: - 例如,一个用户(客户端)想要访问某个被限制访问的国外网站。用户配置了本地的正向代理服务器,当用户发起请求时,请求首先发送到正向代理服务器。代理服务器收到请求后,会代替用户向目标国外网站发送请求。目标网站将响应返回给代理服务器,然后代理服务器再将响应传递回客户端。
应用场景:
访问限制资源:可以用于突破网络访问限制,如访问被封锁的网站或资源。例如,在某些公司或学校网络环境中,通过配置正向代理来访问被防火墙限制的外部网站。
隐私保护:隐藏客户端的真实IP地址,增加隐私性。对于一些希望隐藏自己身份信息的用户,使用正向代理可以避免目标服务器直接获取他们的IP,从而保护隐私。

反向代理
反向代理是位于服务器端的代理服务器。它代理的是后端的真实服务器,对于客户端来说,它好像就是实际提供服务的服务器。客户端向反向代理服务器发送请求,反向代理服务器根据一定的规则将请求转发到后端的真实服务器,并将后端服务器的响应返回给客户端。
工作流程: - 以一个拥有多个Web服务器的大型网站为例。网站设置了反向代理服务器。当用户访问网站时,请求首先到达反向代理服务器。反向代理服务器根据负载均衡算法(如轮询、加权轮询等),将请求转发到后端的某一台Web服务器。Web服务器处理完请求后,将响应返回给反向代理服务器,反向代理服务器再将响应发送给客户端。
应用场景:
负载均衡:将客户端请求均匀地分配到多个后端服务器上,以防止某一台服务器过载,提高系统的整体性能和可用性。比如,一个电商网站在促销活动期间流量巨大,通过反向代理可以合理分配流量到多台服务器,避免服务器崩溃。
安全防护:隐藏后端服务器的真实IP地址,保护后端服务器免受外部攻击。攻击者只能看到反向代理服务器的IP地址,增加了后端服务器的安全性。同时,反向代理还可以对请求进行过滤和安全检查,如检查恶意请求、SQL注入等攻击行为。

Nginx负载均衡策略
Nginx提供的负载均衡策略有2种:内置策略和扩展策略。
内置策略为轮询,加权轮询,Ip hash。
扩展策略,就是可以用户自定义。
轮询
按顺序依次请求

加权轮询
不同服务器有不同的权重

iphash
其实就是同一个IP只访问一个服务器,不会变换到其他服务器,这样解决了session的问题

动静分离
- 动静分离是指在 Web 应用中,将动态内容(如动态网页,通常是由服务器端脚本语言生成的页面,如 PHP、JSP 等)和静态内容(如 HTML、CSS、JavaScript 文件、图片、视频等)分离开来处理。这样做的目的是提高服务器的性能和效率,因为静态内容的处理方式相对简单,可以通过更高效的方式进行传输和缓存,而动态内容则需要服务器端进行复杂的运算。

Nginx安装和使用
nginx的安装十分简单,这里以windows为例:
- 下载nginx
http://nginx.org/en/download.html 下载稳定版本。
下载后解压,解压后如下:
- 启动nginx
windows下启动nginx非常简单,双击nginx.exe即可,当然也可以使用cmd,切换到nginx目录下,运行nginx.exe
nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果80端口被占用可以修改为未被占用的端口即可。
输入 http://localhost:80 查看是否启动成功
关闭nginx
如果是直接双击nginx.exe,那么就没有窗口,如果是cmd启动的nginx,直接关掉cmd窗口是没有办法结束nginx进程的,可以再次进入nginx目录,输入nginx -s stop
(快速停止nginx) 或 nginx -s quit
(完整有序的停止nginx)退出进程。
nginx最常用命令
命令 | 备注 |
---|---|
nginx | 启动 |
nginx -s stop | 停止 |
nginx -s quit | 安全退出 |
nginx -s reload | 重新加载配置文件(最常用) |