У WordPress есть опция Multisite, которая позволяет в рамках одного движка управлять множеством сайтов.
У нее в свою очередь есть опция работы с сайтами через поддомены или подпапки. Например: wpcraft.ru/site1, wpcraft.ru/site2 или site1.wpcraft.ru, site2.wpcraft.ru.
При работе с поддоменами — особо ничего делать не надо. Типовые конфиги nginx работают хорошо.
А вот когда надо работать с подпапками — тут все очень странно. Найти рабочий конфиг сложно. Интернет завален устаревшими конфигами, которые не работают.
В общем перебрав кучу вариантов, рабочим оказался такой:
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
rewrite ^(/[^/]+)?(/wp-.*) $2 last;
rewrite ^(/[^/]+)?(/.*.php) $2 last;
}
Вставляется примерно так:
Источник: https://wpcraft.ru/2019/nastrojka-nginx-dlya-wordpress-multisite-na-podpapkah-sub-folders/