深入浅出学习透析Nginx服务器的基本原理和配置指南「进阶实践篇」

简介: 深入浅出学习透析Nginx服务器的基本原理和配置指南「进阶实践篇」

proxy_pass的疑问?


很多小伙伴们跟我沟通说之前章节的介绍的proxy_pass介绍的并不是很详细和清晰,那么我们就针对于Nginx proxy_pass 使用在进行复习回顾一下。




proxy_pass的使用场景


在使用Nginx服务,很多情况Nginx用于反向代理,那就离不开使用proxy_pass,它的作用主要用于路由转发到后台服务使用,作为代理到后台服务而已。而针对于proxy_pass后面的url是否以/结尾的场景还有很多学问哦!


如果你不知道后面url添加其它路由等场景,下面来聊聊这些分别代表什么含义和实现。




proxy_pass的详解介绍


第一种场景 后面url加 /


location /statistic/ {
    proxy_pass http://127.0.0.1/;
}
复制代码

那么当客户端请求URL到Nginx所在的服务器时候,Nginx所在的服务器IP地址为:172.168.2.21,那么请求URL:https://172.168.2.21/statistic/index.html


结果:代理到URL:http://127.0.0.1/index.html, 所以你应该明白了,他会将客户传递的statistic的这段path直接忽略掉和strip掉



第二种场景 后面url没有 /

location /statistic/ {
    proxy_pass http://127.0.0.1;
}
复制代码

结果:代理到URL:http://127.0.0.1/statistic/index.html




第三种场景 后面url添加其它路由,并且最后添加 /

location /statistic/ {
    proxy_pass http://127.0.0.1/customer/;
}
复制代码

结果:代理到URL:http://127.0.0.1/customer/index.html



第四种场景 后面url添加其它路由,但最后没有添加 /

location /statistic/ {
    proxy_pass http://127.0.0.1/customer;
}
复制代码

结果:代理到URL:http://127.0.0.1/customerindex.html


进入正题,实战开发技巧


夯实server_name的路由代理机制


通过server_name指令实现选择服务器块(server block)的选择。如果具体细节还可以参考”How nginx processes a request“


使用精确名称


使用精确匹配模式:匹配server_name的值为wiz.org或者www.wiz.biz 的值。

server {
    listen       80;
    server_name  wiz.org  www.wiz.biz;
    ...
}
复制代码

使用通配符


通配符名称可以在名称的开头和结尾包含星号,并且只能紧挨着点号(.)。server_name “.wiz.org” 不仅可以匹配 wiz.wiz.org 还可以匹配www.test.wiz.org. “.wiz.org”这种特殊的通配符名称可以用于匹配精确名称”wiz.org”和通配符名称”.wiz.org”.


server {
    listen       80;
    server_name  *.wiz.org;
    ...
}
server {
    listen       80;
    server_name  wiz.*;
    ...
}
复制代码

上面主要就是通过 * 这个特殊符号进行匹配选择对应的server块,下面就是监听了80端口的两个server服务块,最后选择以.wiz.org结尾的server块,还是以wiz.* 为开始部分的host值,如果有两个都命中了,则会选择配置位置靠前的,目前就是优先会去选择*.wiz.org。


使用正则表达式


Nginx的正则表达式兼容于Perl编程语言(PCRE)。为了使用正则表达式, server_name必须以波浪号(~)开头

server {
    listen       80;
    server_name  ~^(?<www>.+)\.wiz\.biz$;
    ...
}
复制代码

注意:server_name  ~^(?.+).wiz.biz;如果不采用 开头会被当成是精准名称或者如果表达式中包含星号就被当成通配符名称(而且大都被认为时不合法),不要忘记设置””和”;如果不采用~开头会被当成是精准名称或者如果表达式中包含星号就被当成通配符名称(而且大都被认为时不合法),


不要忘记设置”^”和”;()”锚点。虽然语法上没要求,但是逻辑上需要他们。还要注意域名的点号要使用反斜杠做转义,包含字符”{“和”}”的正则表达式需要使用引号:


server_name  "~^(?<name>\w\d{1,3}+)\.example\.net$";
复制代码

否则nginx会启动失败并显示错误信息:

directive "server_name" is not terminated by ";" in ...
复制代码



被命名的正则表达式捕获器可以随后作为变量使用:
server {
    server_name   ~^(www\.)?(?<domain>.+)$;
    location / {
        root   /sites/$domain;
    }
}
复制代码


上面的配置很容易理解,在root定向指令的时候,可以使用之前匹配到的domain对应的实际数据值,进行映射,形成动态映射的模式




匹配模式优先级选择


当通过server_name搜索服务器时, 如果名字和多个指定的变量匹配, 例如同时匹配通配符和正则表达式,在下面的优先级次序中,第一个匹配的变量将被选择:


  • 精确名称


  • 星号开头的最长的通配符名称, 例如 “*.wiz.biz”


  • 星号结束的最长的通配符名称, 例如 “wiz.*”


  • 第一个匹配的正则表达式(按照出现在配置文件中的顺序)




index指令的作用


index指令的作用和目的就是通过Nginx配置,设置网站的默认请求内容(页面)。




index指令简介


index指令后面可以跟多个内容,并且采用空格隔开;


  • 如果包括多个请求内容,如果访问的时候没有指定具体访问的资源,则会依次进行查找,找到第一个为止;
  • 文件可以是相对路径也可以是绝对路径,绝对路径需要放在最后;
  • 文件可以使用变量$来命名;



案例配置

location / {
  root /usr/local/nginx/html;
  index index.html index.htm;
}
复制代码

访问该location的时候,可以通过 http://ip:port/,地址后面如果不添加任何内容,则默认依次访问/usr/local/nginx/html/index.html和/usr/local/nginx/html/index.htm,找到第一个来进行返回。

该指令拥有默认值,index index.html ,即,如果没有给出index,默认初始页为index.html


总结实战案例


创建服务名称为:wiz.test.org,目标wiz.test.orghttp://*.test.net 应该都指向同一个虚拟主机

server {
       listen 80;
       server_name wiz.test.org *.test.net;
       root /var/html/wiz;
       index index.html;
}
复制代码

然后建立 /var/html/wiz目录,准备好站点的html文件。


配置完成之后,在重新转载前,先验证一下:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
复制代码



验证通过,再重新装载:

sudo nginx -s reload
复制代码

最后访问一下对应的nginx服务看看是否可以保证访问到对应的 /var/html/wiz/index.html呢?




相关文章
|
4天前
|
存储 弹性计算 人工智能
2025年阿里云企业云服务器ECS选购与配置全攻略
本文介绍了阿里云服务器的核心配置选择方法论,涵盖算力需求分析、网络与存储设计、地域部署策略三大维度。针对不同业务场景,如初创企业官网和AI模型训练平台,提供了具体配置方案。同时,详细讲解了购买操作指南及长期运维优化建议,帮助用户快速实现业务上云并确保高效运行。访问阿里云官方资源聚合平台可获取更多最新产品动态和技术支持。
|
3天前
|
存储 人工智能 缓存
怎么根据自己的业务选择阿里云服务器配置大小?
本文指导如何根据业务需求精准选择阿里云服务器配置,涵盖个人轻量级至企业级、计算密集型等场景,推荐不同实例类型、存储与带宽方案,并提供成本优化策略,如包年包月节省成本、按需升级配置及选用性价比高的自研ARM架构实例。帮助用户在数字化转型中实现性能与成本的平衡。 注:以上配置与价格基于阿里云2025年官方数据,实际信息可能有所调整,请以官网实时页面为准。
|
3天前
|
人工智能 运维 监控
2025年阿里云服务器配置选择全攻略:CPU、内存、带宽与系统盘详解
在2025年,阿里云服务器以高性能、灵活扩展和稳定服务助力数字化转型,提供轻量应用服务器、通用型g8i实例等多样化配置,满足个人博客至企业级业务需求。针对不同场景(如计算密集型、内存密集型),推荐相应实例类型与带宽规划,强调成本优化策略,包括包年包月节省成本、ESSD云盘选择及地域部署建议。文中还提及安全设置、监控备份的重要性,并指出未来可关注第九代实例g9i支持的新技术。整体而言,阿里云致力于帮助用户实现性能与成本的最优平衡。 以上简介共计238个字符。
|
3天前
|
存储 人工智能 监控
新手小白购买阿里云服务器省钱策略、配置选型与注意事项
针对初次使用阿里云服务器的用户,本文提供系统化的指导方案以优化成本并满足业务需求。首先介绍配置选型,包括实例类型(通用型、计算型、内存型)与基础配置建议;其次阐述省钱策略,如企业认证、合理选择计费模式及批量购买;最后提醒注意事项,涵盖带宽存储规划、地域网络优化及安全管理。新手可通过明确需求、选择配置、优化购买和持续监控四步快速上手,实现高效稳定的云端部署。 注:推荐配置基于2025年阿里云产品体系,具体信息请参考官网。
|
6天前
|
存储 人工智能 并行计算
2025年阿里云弹性裸金属服务器架构解析与资源配置方案
🚀 核心特性与技术创新:提供100%物理机性能输出,支持NVIDIA A100/V100 GPU直通,无虚拟化层损耗。网络与存储优化,400万PPS吞吐量,ESSD云盘IOPS达100万,RDMA延迟<5μs。全球部署覆盖华北、华东、华南及海外节点,支持跨地域负载均衡。典型应用场景包括AI训练、科学计算等,支持分布式训练和并行计算框架。弹性裸金属服务器+OSS存储+高速网络综合部署,满足高性能计算需求。
|
21天前
|
存储 应用服务中间件 Linux
nginx配置证书和私钥进行SSL通信验证
nginx配置证书和私钥进行SSL通信验证
58 4
|
2月前
|
存储 弹性计算 安全
阿里云服务器配置选择策略参考及后期使用注意事项
对于初次购买阿里云服务器的一些新手用户来说,在云服务器配置选择和后期使用过程中有一些不清楚的地方,小编分享几点阿里云服务器配置选择策略,以及后期使用注意事项,购买过程中注意好下面这些事项,能让我们选对选好阿里云服务器,购买之后,在使用过程中,注意下面这些事项,能够让我们更好、更安全的使用阿里云服务器。下面是小编分享的一份详尽的阿里云服务器配置与使用指南,以供参考和借鉴。
|
Web App开发 测试技术 应用服务中间件
nginx 原理&知识
2015年6月4日 17:04:20 星期四 发现两个关于nginx原理的系列文章, 非常好 http://blog.sina.com.cn/s/blog_6d579ff40100wi7p.html (Nginx 变量漫谈) http://blog.
742 0
|
3月前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
229 7
|
4月前
|
应用服务中间件 BI nginx
Nginx的location配置详解
【10月更文挑战第16天】Nginx的location配置详解

热门文章

最新文章