Hello, I have done the steps here:

  1. Added these 4 lines in nginx configuration
    fastcgi_cache_key "$scheme$request_method$host$request_uri";
    fastcgi_cache_path /dev/shm/nginx-cache/wp levels=1:2 keys_zone=WORDPRESS:100m inactive=60m max_size=1g;
    fastcgi_cache_use_stale error timeout invalid_header http_500;
    fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
  2. Changed the site configuation from include enable-php-81.conf; to include enable-php-81-wpfastcgi.conf;
  3. Installed Nginx Helper plugin in Wordpress
  4. Added define('RT_WP_NGINX_HELPER_CACHE_PATH','/dev/shm/nginx-cache/wp'); to wp-config.php

And everything seems to work, I get cache HIT in the header response for the wordpress site main page. Except when I try to go to any other page, I get 404. I notice that the url that doesn't work follows index.php routing page forexample: https://domain.com/index.php/contact/ to go to contact page. What am I missing here? Any ideas?

Regards,
Tony

    aaP_tony
    Hello, if the website is brand new, it is recommended to use the website -- add site -- Wordpress deploy to deploy

      aaPanel_Kern
      Unfortunately it is not. I could try to add a new site and copy the content to this new site to test, will that work?

      aaPanel_Kern
      I added a new site using the wordpress deploy option. Then copy the old contents over to the new site. Unfortunately, I still have the same issue, meaning it is not the configuration? May be there is some settings/plugins that affect this fastCGI setting?

        aaP_tony
        Is your site brand new? If it is, you can directly deploy Wordpress deploy
        Otherwise, you can only add related plug-ins by yourself

          aaPanel_Kern It is not a new site, that is why I want to add it after the fact. Everything seems to be working for the main page, I get Cache HIT but for other pages I get 404.

            aaP_tony

            Use all in one wp migration 6.7 version which you can find in the internet. it allows you to export the wp installation to a single file. Deploy the wordpress as like kern said. check the fast cgi config and make it working. then import the backup file and check if its working.

            6 days later

            aaPanel_Kern
            I thought it was something to do with rewrite also, but when I changed back to using enable-php-81.conf instead of enable-php-81-wpfastcgi.conf everything works fine (minus the caching), no 404 error. And since rewrite is configured on nginx level, I don't think there are any rewrites in those php conf files.

            I will try to create a new site and test whether fastcgi works on that first, then migrate the old site to see if that helps.

              aaP_tony
              enable-php-81-wpfastcgi.conf This is the configuration file dedicated to deploy wordpress. You are advised to check whether there is an Nginx Helper

                aaPanel_Kern
                Ok so I think I found the problem, it is to do with url rewrite, but within wordpress itself. It is a problem on my WP permalink settings, if I change it so I don't have index.php in the middle of the url then everything works (after adding URL rewrite rule in aapanal for that site). Thanks for your help.

                aaPanel_Kern
                I have a question regarding the enable-php-81-wpfastcgi.conf file, when comparing it to enable-php-81.conf it is missing this line:

                include pathinfo.conf;

                Is this on purpose? If I add this back to the enable-php-81-wpfastcgi.conf file my site works, no more 404. But there is another problem, all pages are nginx-cache: BYPASS. But that is also because of this clause in enable-php-81-wpfastcgi.conf

                if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
                    set $skip_cache 1;
                }

                If I remove index.php from this line, everything is working as intended, nginx-cache: HIT. Why is index.php skipped in the first place?

                I know this is specific for my wordpress permalink setup, but I think I didn't change it from the default wordpress setting so this might effect other people too.

                  aaP_tony
                  This is done on purpose. Not sure what your website configuration is causing 404

                  The index.php rule is a special case in some WordPress websites, because in the URL structure of WordPress, the URLs of many pages end with index.php, such as http://example.com/page1/index.php, http://example.com/page1/index.phpetc. The content of these pages may be dynamically generated, including dynamic data such as user login status and comments, so they cannot be cached.
                  In addition, index.php may also be an entry file in some plug-ins or themes, and the contents of these files may also be dynamically generated, so they cannot be cached.
                  Therefore, in order to avoid caching these dynamically generated pages or files, you need to add index.php to the rules for skipping caching.

                    aaPanel_Kern
                    Thank you for the clear explanation about the index.php. I understand it is hard to cater to all wordpress configurations, so I will only share my findings incase someone else have the same configuration as me. The configuration in question here is Settings -> Permalinks, if you this custom structure /index.php/%year%/%monthnum%/%day%/%postname%/ (I presume any permalinks with index.php in the middle will have this issue), you'll need to change the nginx configuration after deploying from aapanel.

                    The issue I had was getting 404 when trying to load any page other than the homepage, this is fixed by adding include pathinfo.conf; to enable-php-81-wpfastcgi.conf. Then you'll have another issue because of the index.php in the url, your pages won't get cached so you'll have to remove index.php from this line also:

                    if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
                        set $skip_cache 1;
                    }

                    But as Kern stated above, this won't work if your wordpress permalinks setting is different than mine.

                    2 months later

                    aaPanel_Jose fastcgi_cache_key "$scheme$request_method$host$request_uri";
                    fastcgi_cache_path /dev/shm/fastcgi-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
                    fastcgi_cache_use_stale error timeout invalid_header http_500;
                    fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

                    how to solved this isue

                      Connect with us: 📨 Telegram 💬 Discord Email: support@aapanel.com