宝塔618特惠活动,企业版999元/年,宝塔SSL证书买1送1!限时抢购!查看活动
当前位置:论坛首页 > Linux面板 > 求助

【已解答】问一个宝塔NGINX规则的问题

发表在 Linux面板2021-8-12 20:53 [复制链接] 7 2795

在服务器上新建了一个站点,在站点的配置文件里新增了一个规则

下载.png

发现将规则放到这个地方,无法生效。
必须把这段放到
include enable-php-73.conf;
的上面,才会生效。访问123.php的时候才会返回404


我早上问了一个问题

http://wwww.xxx.com/123.php?id=12344
index.php后面凡是跟着?id=12344这样参数的,直接返回一个404状态
定义了规则:
location ~ ^/123.php
{
    if ($args ~ id=) {
        return 404;
    }
}

还是需要把这段放
include enable-php-73.conf;
的上面,才会生效。
不过直接访问123.php的时候又会弹出直接下载123.php

使用道具 举报 只看该作者 回复
发表于 2021-8-13 10:02:02 | 显示全部楼层
您好,您把您在网站主配置中添加的配置全部删除,
然后到伪静态中添加:
  1. if ( $request_uri !~* 123.php$ ) {
  2.         return 404;
  3. }
复制代码


意思是说,当访问url中匹配到不是 123.php结尾的url地址,都跳转到 404
使用道具 举报 回复 支持 反对
发表于 2021-8-14 14:08:47 | 显示全部楼层
大炮运维V587 发表于 2021-8-13 10:02
您好,您把您在网站主配置中添加的配置全部删除,
然后到伪静态中添加:

你看我的问题1:
为嘛要把那段放在
include enable-php-73.conf;
的上面,才会生效。
使用道具 举报 回复 支持 反对
发表于 2021-8-14 14:40:04 | 显示全部楼层
budogf 发表于 2021-8-14 14:08
你看我的问题1:
为嘛要把那段放在
include enable-php-73.conf;

Nginx加载配置文件是从上到下的,
include enable-php-73.conf;

优先级.png
这里是include中的配置,有多个匹配的话,下面的优先级低于上面的配置,下面的location就不再匹配。


使用道具 举报 回复 支持 反对
发表于 2021-8-14 14:49:51 | 显示全部楼层
大炮运维V587 发表于 2021-8-14 14:40
Nginx加载配置文件是从上到下的,

那个我:
  1. location ~ ^/123.php
  2. {
  3.     if ($args ~ id=) {
  4.         return 404;
  5.     }
  6. }
复制代码


岂不是要写到enable-php-73.conf才能生效,不过这样所有使用7.3版本的网站都会执行这个规则。也不行
使用道具 举报 回复 支持 反对
发表于 2021-8-14 14:59:56 | 显示全部楼层

你自己看Nginx的官方文档研究下,比其他人告诉你的要理解的深,代码这一块,只有自己测试了才知道
使用道具 举报 回复 支持 反对
发表于 2021-8-16 08:52:51 | 显示全部楼层
本帖最后由 budogf 于 2021-8-16 09:19 编辑
大炮运维V587 发表于 2021-8-14 14:59
你自己看Nginx的官方文档研究下,比其他人告诉你的要理解的深,代码这一块,只有自己测试了才知道 ...

搞定了

  1. location ^~ /123.php {
  2.   if ($args ~ id=) {
  3.         return 404;
  4.     }
  5.   try_files $uri = 404;
  6.   fastcgi_pass unix:/tmp/php-cgi-73.sock;
  7.   fastcgi_index index.php;
  8.   include fastcgi.conf;
  9.   include pathinfo.conf;
  10. }
复制代码

写在站点管理中的伪静态
不知道这样的写法有无什么不好的地方?请指示
使用道具 举报 回复 支持 反对
发表于 2024-6-29 10:07:23 | 显示全部楼层

    location /admin{
            try_files $uri $uri/ /www/wwwroot/front/dist/index.html;
    }
    location / {
        try_files $uri $uri/ /index.html;
    }

请问我nginx中加了这个/admin 的  但是页面输入/admin地址没有生效,什么情况?
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术免费分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表