Nginx
Nginx概念:
聊到Nginx,先简单讲一下Nginx的基本概念
Nginx是一个高性能的、开源的 Web 服务器和反向代理服务器软件,由 Igor Sysoev 开发。它可以作为 HTTP 服务器使用,也可以作为负载均衡器、HTTP 缓存、反向代理和邮件代理等其他功能使用。
常见的一些概念有
负载均衡
在高访问量的情况下,单个服务器可能无法满足所有请求。Nginx 可以通过负载均衡的方式来分摊请求到多台服务器上,从而提高整个系统的吞吐量和可靠性。
反向代理
反向代理是指将客户端的请求转发到后端服务器,并将响应返回给客户端。与正向代理不同,反向代理隐藏了真实的服务器并提高了安全性。
静态文件服务器
Nginx 可以作为静态文件服务器使用,例如,图片、CSS 和 JavaScript 文件等。Nginx 可以快速地处理这些静态资源,并减轻后端服务器的负担。
动态内容传输
可以编写 Nginx 模块来处理动态内容的生成和传输,常用的语言有 Lua 和 Perl。Nginx 提供了灵活的配置选项来支持不同的编程语言和框架。
SSL/TLS 加密
Nginx 支持 SSL 和 TLS 协议,可以使用加密传输 HTTP 流量,从而提高数据的安全性。
缓存
Nginx 可以作为反向代理缓存服务器使用,缓存常见的静态和动态资源,减少了对后端服务器的请求,提高了响应速度。
日志处理
Nginx 可以生成访问日志并将它们保存到本地文件系统中,也可以通过 Syslog 或 TCP/UDP 协议将访问日志发送到远程服务器。
Nginx安装
Nginx可以直接通过Nginx的官网进行下载 但是原生的Nginx没有集成太多的插件
Nginx原生官网nginx: download
这里推荐使用openResty OpenResty® - 开源官方站
openResty是基于Nginx和Lua的高性能web平台
我这里就演示openResty了
下载完成后可以使用cmd或者是其他的命令行进入到openResty的目录 直接nginx.exe就可以启动了
当我们再去访问本地的localhost:80的时候就会展示openResty
location均衡配置
启动完成之后 我们找到目录下conf的nginx.conf
因为注释的内容太多不方便展示 然后我就给删掉了
我们可以看到 默认listen为80的时候 location接受的是 / 也就是所有的请求路径都会展示html下的index.html
为了更直观的看到变化 我们可以把默认的location改为
default_type text/html;
location / {
echo "hello nginx";
}
改为这个后 再启动一个cmd窗口 输入 nginx.exe -s reload 指令然后回车 这个也就是重启nginx的指令 我们再去访问本地80的时候 页面就会展示echo打印出来的信息
当然 nginx也不是只展示一个页面 我们可以自定义一些请求的路径地址给nginx
下面我举个例子
在原有的location基础上我们加入一个其他的
重启nginx 后我们去访问一下这个路径
这样我们就可以看到一个很明显的区别了
这样也是会出现问题 因为如果我们需要访问/xuan/aa的时候 则还是会走我们默认的location / 这条
因为在nginx中 / 是默认去捕获那些配置文件中没有的路径
所以我们要用到 ^~ 可以把这两个符号理解为 以什么什么开头
我们这样再去访问不管是/xuan/1 还是/xuan/2都会展示 hello ^~
此外再说一下第三种
~ /
这种是以正则的方式去判断请求的路径
例如~ /\w 这里的\w 也就是正则中的 是字母或则数字
怕你们不理解 我在这里排个序
并且在nginx的配置文件中 可以使用[a-z]
这样我们请求a-z的路径都会走这一条
但是如果有两个location都符合条件的话 Nginx会选择书写顺序的先后来选择 会选择第一个符合规则的location
反向代理配置
我这里就用我自己的web做一个实例了
配置反向代理的时候 需要编写proxy_pass web地址
重启nginx后我们再去访问80端口 就会展示我们反向代理中的web页面
但是当我们需要其他路径 也就是通过访问/??的方式访问的反向代理中的web 就会出现问题
以上图为例
当我们去访问/aa的时候
就会出现404的问题 当然这个问题是因为 nginx把这个/aa请求转化为了
http://www.mayi.red/aa 所以会出现404的问题
解决方式
在/aa的后面再加一个/
在反向代理web地址的后面也加一个/、
完美解决
当然 最好的格式还是把服务器的ip地址给归纳起来 并且做一个负载均衡
这也就是一个入门级的教程