budogf 发表于 2021-8-12 20:53:58

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

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



发现将规则放到这个地方,无法生效。
必须把这段放到
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

大炮运维V587 发表于 2021-8-13 10:02:02

您好,您把您在网站主配置中添加的配置全部删除,
然后到伪静态中添加:
if ( $request_uri !~* 123.php$ ) {
      return 404;
}

意思是说,当访问url中匹配到不是 123.php结尾的url地址,都跳转到 404

budogf 发表于 2021-8-14 14:08:47

大炮运维V587 发表于 2021-8-13 10:02
您好,您把您在网站主配置中添加的配置全部删除,
然后到伪静态中添加:



你看我的问题1:
为嘛要把那段放在
include enable-php-73.conf;
的上面,才会生效。

大炮运维V587 发表于 2021-8-14 14:40:04

budogf 发表于 2021-8-14 14:08
你看我的问题1:
为嘛要把那段放在
include enable-php-73.conf;


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


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


budogf 发表于 2021-8-14 14:49:51

大炮运维V587 发表于 2021-8-14 14:40
Nginx加载配置文件是从上到下的,




那个我:
location ~ ^/123.php
{
    if ($args ~ id=) {
      return 404;
    }
}

岂不是要写到enable-php-73.conf才能生效,不过这样所有使用7.3版本的网站都会执行这个规则。也不行

大炮运维V587 发表于 2021-8-14 14:59:56

budogf 发表于 2021-8-14 14:49
那个我:




你自己看Nginx的官方文档研究下,比其他人告诉你的要理解的深,代码这一块,只有自己测试了才知道

budogf 发表于 2021-8-16 08:52:51

本帖最后由 budogf 于 2021-8-16 09:19 编辑

大炮运维V587 发表于 2021-8-14 14:59
你自己看Nginx的官方文档研究下,比其他人告诉你的要理解的深,代码这一块,只有自己测试了才知道 ...
搞定了

location ^~ /123.php {
if ($args ~ id=) {
      return 404;
    }
try_files $uri = 404;
fastcgi_pass unix:/tmp/php-cgi-73.sock;
fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
}
写在站点管理中的伪静态
不知道这样的写法有无什么不好的地方?请指示

huangyongsheng 发表于 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地址没有生效,什么情况?
页: [1]
查看完整版本: 【已解答】问一个宝塔NGINX规则的问题