Nginx简单学习与了解
为什么会有nginx
没有nginx会有哪些问题及怎么解决
我的理解 :在不使用微服务的情况下,一台服务器无法应对高并发的问题;可以部署多态相同的服务器,共同来处理这些
请求,这多台服务器存在一个问题:服务与服务之间的session不共享、怎么做到每台服务的处理的请求达到一个
合理的情况(防止请求都发到一台服务器上去)等等问题---nginx的出现就可以解决这些问题。
AI总结:
单台服务器无法应对高并发时,通常会部署多台相同应用的服务器做水平扩展。但多副本会带来两个问题:一是请求如何均匀分发、避免单台过载;二是 HTTP 无状态前提下,各节点 Session 不互通会导致用户状态丢失。
Nginx 作为接入层,通过 upstream 负载均衡解决流量分发(轮询/权重/ip_hash 等),并通过 ip_hash 或 sticky 机制可做 Session 保持;而彻底的 Session 共享通常配合 Redis 等外部存储实现,使应用无状态化。Nginx 在这个过程中承担流量入口、均衡与边缘治理的角色。
正向代理和反向代理
正向代理
在打游戏时,由于网络延迟,有时需要使用VPN或者加速器,核心原理:将客户端(游戏)的请求通过代理服务器(VPN或者加速器)访问目标服务器,目标服务器识别的是代理服务器的请求信息而非客户端的请求信息。
反向代理
我们在访问百度时,浏览器的地址栏永远是百度的域名,用户不知道真正访问百度的哪一台服务器。
区别
正向代理:是在客户端,用户配置的;
反向代理:是在服务端,用户无感知的。
nginx的主要功能
反向代理
客户端访问百度域名的案例。
负载均衡
- 权重配置:服务器有多台,每台服务器的配置(内存、CPU等硬件)不同,想要给配置好的服务器分配更多的请求,配置低的服务器分配少的请求;通过nginx对服务器权重的配置,可以达到这一效果;
- session保持问题:
- 方案一:当用户访问服务时,如果是A服务器处理了这个请求,就将这个用户的session和IP绑定,每次都让这台服务器处理这个用户的请求;----存在的问题:这个服务挂了,就凉凉。
- 方案二:用户的session信息存在redis中,用户的请求可以分发到任何一台服务器,session统一从redis中获取。
动静分离
静态资源(html、js、css等)放在nginx上,因为这些请求不需要后台处理,放在nginx上可以提高资源的响应速度。
安装nginx
https://nginx.org/en/download.html
Windows下安装
官网下载后,找一个纯英文路径,使用cmd命令之心nginx.exe文件运行即可,conf中默认监听的端口是80,启动后可以访问测试是否成功,成功页面如下:

Linux下载安装
官网 Linux 的 .tar.gz = 源码 ,解压后必须 ./configure && make && make install 才能出二进制,之后再改 nginx.conf 启动;
想要"解压改配置直接跑",得去拿静态编译的第三方二进制包。
注意事项
如果成功启动,测试访问失败,请检查对应端口的防火墙上对应端口是否已经放行。
Linux下常用命令
cmd
##在nginx的sbin目录下
./nginx --启动
./nginx -s stop --停止,直接停止
./nginx -s quit --安全退出,保证进程安全的情况下,一项一项停止
./nginx -s reload --重新加载配置文件
ps aux|grep nginx --查看进程