У меня есть многосайтовая сеть WordPress, и я пытаюсь перенести ее на свой новый сервер по одному сайту за раз, поэтому у меня есть обратный прокси-сервер на моем сервере nginx, указывающий на старый сервер для каждого дочернего сайта.
Когда я делаю:
location /oldsite1 {
proxy_pass http://myoldip;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /oldsite2 {
proxy_pass http://myoldip;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
Я могу получить доступ к интерфейсу сайта по адресам mydomain.com/oldsite1 и mydomain.com/oldsite2, но когда я перехожу на mydomain.com/oldsite1/wp-admin, все таблицы стилей и файлы JS возвращают 404. То же самое для / oldsite2.
Когда я делаю
location ^~ /oldsite1 {
proxy_pass http://myoldip;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location ^~ /oldsite2 {
proxy_pass http://myoldip;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
Кажется, все работает нормально, нет проблем, но я не уверен, что на самом деле делает "^ ~", чтобы исправить это, или если есть причина, по которой я не должен делать это таким образом.
В документации указано:
Если у самого длинного совпадающего префикса есть модификатор «^ ~», то регулярные выражения не проверяются.
Я не уверен, чем это поведение отличается от простого отсутствия модификатора перед путем местоположения и почему.