Nginx实战(基础篇)
一、Nginx 简介
1.1 Nginx的几种发行版
Nginx常用的有如下四种版本:
- Nginx开源版,该版本比较纯净,但不适合做二开
- Nginx pro商业版
- Tengine 淘宝内部使用的Nginx,一般项目可以使用该版本的Nginx
- OpenResty(Nginx+Lua),如果需要对Nginx进行扩展,可优先选择这个,支持使用Lua脚本对Nginx进行功能扩展
1.2 安装Nginx
从nginx: download下载Nginx,也可以使用如下命令下载:
然后,解压:
检查环境和配置:
进行编译和安装:
1.3 将Nginx安装为系统服务
创建服务脚本
vi /usr/lib/systemd/system/nginx.service
服务脚本内容
重新加载系统服务
systemctl daemon-reload
然后就可以使用systemctl start nginx
来启动nginx服务。
二、Nginx基础配置
2.1 虚拟主机 vhost
可以利用虚拟主机在一台Nginx服务器上配置多个站点,充分发挥服务器性能。
Nginx中配置虚拟主机主要利用server来实现,如下所示:
配置虚拟主机的原则是 server_name + port 必须是唯一的,server_name 也可以使用域名来进行配置,如下所示:
2.2 server_name 的多种匹配方式
http.server 标签中的 server_name有多种匹配方式可以使用,它们分别是:
- 全限定域名或IP:即使用完整名称进行匹配
- 通配符匹配:即使用 * 进行匹配
- 正则匹配:即使用正则表达式进行匹配
正则表达式匹配示例:
在 nginx 中,location 和 server_name 等使用正则表达式进行匹配时,必须在正则表达式前面加~
,以表示后面的内容为正则表达式。
2.3 反向代理和正向代理
正向代理:一般指内网用户通过正向代理来访问外网,代理网关是内网和外网连接的桥梁。
反向代理:与正向代理不同的是代理网关充当的角色,在反向代理中,代理网关的作用是隐藏内部服务细节,向用户提供统一的接口,代理网关起到中转请求的作用。
Nginx中,可以通过如下方式配置正向代理:
Nginx中,可通过如下方式配置反向代理:
这里起作用的主要是 proxy_pass 和 upstream 关键字,在 server.location 里面的 proxy_pass 表示该 location 路径下使用代理模式, 它的值 http://+别名 ,这里的别名和 upstream 后面紧跟的别名一一对应,upstream 关键字用来指定一组相同的服务。
2.4 负载均衡
Nginx 支持的负载均衡主要有:轮询、权重、最少连接数、uri哈希、ip哈希。通常我们会使用轮询和权重的方式来进行负载均衡。
轮询方式:
权重方式:
ip哈希:
uri哈希:
cookie值哈希:
上述cookie值哈希需要确保cookie中包含jssessionid字段。
在 upstream.server 中还有几个关键字可以配置,分别是 down 和 backup,down 表示该服务不可用,backup 表示仅当其他资源都不可用时,再使用该资源;当其他资源可用时,不会使用它。
2.5 动静分离
动静分离中的“动”和“静”分别指动态资源和静态资源,动静分离指将服务中的静态资源存放在Nginx所在的服务器,当客户端请求静态资源时,Nginx直接返回给用户,加速了静态资源的传输效率。
动静分离一般是通过 server.location 进行配置,示例如下:
location后的值中,'~'后面的星号表示忽略大小写。上述配置使用了正则表达式来匹配 /css /js /img 路径。
2.6 URL rewrite
url重写在一些想要隐藏敏感路径的情况下非常有用,它需要配合正则表达式来使用,示例如下:
rewrite的格式为 rewrite 需要重写的url 重写后的url
,用括号来进行分组,通过$数字来获取分组。
2.7 防盗链
防盗链可以防止服务器内部的静态资源被随意在其他地方使用,它是通过http请求头中的referer属性来实现的,当浏览器在发出请求的时候,如果该请求是通过页面链接引起的,那么浏览器会在请求头中加入referer,它的值为当前页面的根url,Nginx服务器可以通过配置来验证referer的值是否符合预期,如果不符合,则返回自定义内容,如果符合,返回预期内容。
防盗链配置规则:
- none:用来处理referer为空的情况
- blocked:检测referer被防火墙或代理服务器删除或伪装的情况
- server_names:可以配置多个server_name进行验证
Nginx配置示例如下:
这里验证无效的referer后,不仅可以返回错误码,还可以使用url rewrite技术,返回指定的内容。
上面的配置将所有的未通过验证的referer的url进行了重写,将返回 /img/x.png 的内容。
2.8 Nginx 高可用——keepalived
微服务通过集群的方式部署和使用Nginx进行负载均衡配置实现了服务的高可用,假如Nginx代理服务器挂掉,用户无法访问被代理的微服务,此时服务就变为不可用状态。
为了实现Nginx高可用,需要引入一个keepalived程序,它的功能和它的名字一样,就是用来检测服务是否存活的,具有相同配置的不同主机上的keepalived程序称为一个组,keepalived程序管理着一个虚拟IP(vip),组内同一时刻仅有一台主机可持有该vip。也就是说,具有相同配置的keepalived之间相互通信,当keepalived程序检测到持有vip的主机挂掉后,它将从存活的主机中选择一台来将vip添加到该主机的网卡上。持有vip的主机对外提供服务。
1. 安装 keepalived
- centos可用通过命令
yum install keepalived
进行安装,配置文件地址为/etc/keepalived/keepalived.conf
- 从Keepalived for Linux下载编译安装,安装方式和安装Nginx类似
2. 配置 keepalived
最小的 keepalived 配置如下:
最少配置两台机器作为Nginx网关服务器,一台做master,一台做backup,配置keepalived后,当主节点挂掉后,keepalived会自动将虚拟ip加入到备用节点的网卡上,类似于IP漂移。
2.9 http + ssl
首先假设我们已经通过阿里云等平台申请到了Nginx可以使用的证书、私钥文件(xx.pem、xx.key),在Nginx中配置https非常简单,示例如下:
上面配置ssl时使用了相对路径,所以需要将xx.pem和xx.key放入nginx/conf文件夹中。上述配置将http请求转换为https请求。
__EOF__

本文链接:https://www.cnblogs.com/zolmk/p/17733464.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?