Cannot remove index.php (with Nginx)

I’m using Nginx with NextCloud, but I can’t remove index.php part from my website’s URL
this is part of my Nginx config,

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    location = /.well-known/carddav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
    location = /.well-known/caldav {
        return 301 $scheme://$host:$server_port/remote.php/dav;
    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

	gzip on;
	gunzip on;
	gzip_vary on;
	gzip_comp_level 6;
	gzip_buffers 1024 8k;
	gzip_min_length 512;
    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
	gzip_disable "msie6";
	gzip_http_version 1.1;
	gzip_types text/xml text/plain text/css text/x-component application/json text/javascript application/xml application/xml+rss application/font-woff application/ application/ application/javascript application/x-javascript image/svg+xml image/x-icon font/truetype font/opentype;

    location / {
        rewrite ^ /index.php;

    location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
        deny all;
    location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
        deny all;
    location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;

        location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
        try_files $uri/ =404;
        index index.php;

    # Adding the cache control header for js, css and map files
    # Make sure it is BELOW the PHP block
    location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
        try_files $uri /index.php$request_uri;
        add_header Cache-Control "public, max-age=15778463";
        # Add headers to serve security related headers (It is intended to
        # have those duplicated to the ones above)
        # Before enabling Strict-Transport-Security headers please read into
        # this topic first.
        #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
        # WARNING: Only add the preload option once you read about
        # the consequences in This option
        # will add the domain to a hardcoded list that is shipped
        # in all major browsers and getting removed from this list
        # could take several months.
        add_header Referrer-Policy "no-referrer" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-Download-Options "noopen" always;
        add_header X-Frame-Options "SAMEORIGIN" always;
        add_header X-Permitted-Cross-Domain-Policies "none" always;
        add_header X-Robots-Tag "none" always;
        add_header X-XSS-Protection "1; mode=block" always;

        # Optional: Don't log access to assets
        access_log off;

    location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
        try_files $uri /index.php$request_uri;
        # Optional: Don't log access to other assets
        access_log off;

I have tried some ways such as replace the location / part with this

    location / {
        try_files \$uri \$uri/ /index.php$uri;

but it doesn’t work for me, also as some other posts’ said check the config file config/config.php
with the part as overwrite.cli.url' => '',
But all of these couldn’t figure out my problem.
Could anyone help me to fix this problem? Thank you so much

Do you know the htaccess.RewriteBase configuration parameter?

Yes that part was already set as document
'htaccess.RewriteBase' => '/',

In Nginx this works with the fastcgi_param front_controller_active true; inside the PHP location block. Compare with the documentation: