Nginx配置文件location配置

1.环境准备

  • nginx 1.18.0
  • centos 7.8

2.安装nginx参考

# 1.安装必备组件
yum install yum-utils -y
# 2.添加源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 3.查看nginx仓库信息
yum repolist all|grep nginx
# 4.检查有无nginx信息
yum info nginx
yum search nginx
# 5.安装nginx
yum install nginx-1.18.0 -y
# 6.查看nginx
which nginx

3.nginx文件划分

/etc/nginx 存放nginx相关配置,一般用来编辑内部的nginx.conf文件
/var/log/nginx 存放nginx默认的日志,可以通过查看access.log文件浏览相关内容
/usr/share/nginx 一般是用来放置需要nginx转发的静态资源文件

4.systemctl操作nginx服务

systemctl status nginx 查看nginx服务状态
systemctl start nginx 启动nginx服务
systemctl reload nginx 重新加载nginx服务
nginx自己的命令
nginx -t 校验nginx.conf配置是否正确
/usr/sbin/nginx 启动nginx
/usr/sbin/nginx -s reload 重新加载nginx配置文件
/usr/sbin/nginx -s quit 完整退出nginx

5.nginx文件结构

Global: nginx 运行相关
Events: 与用户的网络连接相关
http
    http Global: 代理,缓存,日志,以及第三方模块的配置
    server
        server Global: 虚拟主机相关
        location: 地址定向,数据缓存,应答控制,以及第三方模块的配置

6. location 语法

nginx有两层指令来匹配请求 URI 。第一个层次是 server 指令,它通过域名、ip 和端口来做第一层级匹配,当找到匹配的 server 后就进入此 server 的 location 匹配。

location 的匹配并不完全按照其在配置文件中出现的顺序来匹配,请求URI 会按如下规则进行匹配:

先精准匹配 = ,精准匹配成功则会立即停止其他类型匹配;
没有精准匹配成功时,进行前缀匹配。先查找带有 ^~ 的前缀匹配,带有 ^~ 的前缀匹配成功则立即停止其他类型匹配,普通前缀匹配(不带参数 ^~ )成功则会暂存,继续查找正则匹配;
=^~ 均未匹配成功前提下,查找正则匹配 ~~* 。当同时有多个正则匹配时,按其在配置文件中出现的先后顺序优先匹配,命中则立即停止其他类型匹配;
所有正则匹配均未成功时,返回步骤 2 中暂存的普通前缀匹配(不带参数 ^~ )结果

location匹配顺序(序号越小优先级越高)

  1. location = # 精准匹配
  2. location ^~ # 带参前缀匹配
  3. location ~ # 正则匹配(区分大小写)
  4. location ~* # 正则匹配(不区分大小写)
  5. location /a # 普通前缀匹配,优先级低于带参数前缀匹配。
  6. location / # 任何没有匹配成功的,都会匹配这里处理

参考 :https://zhuanlan.zhihu.com/p/130819099

附 :nginx配置proxy_pass中url末尾带/与不带/的区别

注意:当location为正则表达式匹配模式时,proxy_pass中的url末尾是不允许有"/"的,因此正则表达式匹配模式不在讨论范围内。

  • proxy_pass配置中url末尾带/时,nginx转发时,会将原uri去除location匹配表达式后的内容拼接在proxy_pass中url之后
测试地址:http://192.168.171.129/test/tes.jsp
location ^~ /test {
    proxy_pass http://192.168.171.129:8080/server/;
}
代理后实际访问地址:http://192.168.171.129:8080/server//tes.jsp

location ^~ /test/ {
    proxy_pass http://192.168.171.129:8080/;
}
代理后实际访问地址:http://192.168.171.129:8080/tes.jsp

proxy_pass配置中url末尾不带/时,

  • 如url中不包含path,则直接将原uri拼接在proxy_pass中url之后 --规则1;
  • 如url中包含path,则将原uri去除location匹配表达式后的内容拼接在proxy_pass中的url之后-- 规则2
测试地址:http://192.168.171.129/test/tes.jsp
location ^~ /test {
    proxy_pass http://192.168.171.129:8080/server;
}
代理后实际访问地址:http://192.168.171.129:8080/server/tes.jsp //规则2

location ^~ /test/ {
    proxy_pass http://192.168.171.129:8080;
}
代理后实际访问地址:http://192.168.171.129:8080/test/tes.jsp //规则1

参考:https://blog.csdn.net/zhanghui200920061988/article/details/105132167

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值