nginx 是否有可能打开特定的位置和基于一个url的

q9rjltbz  于 2023-05-16  发布在  Nginx
关注(0)|答案(1)|浏览(125)

我想使用API启用特定的URL位置。
我的API应该是这样的:https://myurl.com/optional并将返回true
是否可以根据URL打开和关闭特定位置?

server {

    root /var/www/public;

    index index.php index.html index.htm index.nginx-debian.html;

    server_name demo.example.com;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
        
        if(https://myurl.com/optional === true){
                location /optional {
                        proxy_pass http://localhost:8989;
                }
        }

}

我确实尝试在每次API返回不同值时替换nginx配置。但这样做是非常脆弱的。

vybvopom

vybvopom1#

如果要切换的位置数量有限,您可以通过定制NGINX配置并让您的API创建/删除将“启用/禁用”所需位置的标志文件来完成,而不是每次尝试替换NGINX配置的API。
请注意,它不会在性能方面表现完美,因为它是introduces a file check,但在现代SSD上,这不是很重要:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}
        
location /optional {
    try_files /optional.disabled @optional_enabled;
}

location = /optional.disabled {
    return 404;
}

location @optional_enabled {
    proxy_pass http://localhost:8989;
}

要“禁用”一个位置,您的API将创建/optional.disabled文件(例如:touch命令)。要“启用”一个位置,您的API将删除标志文件。

相关问题