@Mishman7

Как сконфигурировать на nginx wordpress рядом с имеющимся сайтом?

Нужна ваша помощь в конфиге nginx.

Есть:
example.com/api/* - запросы уходят к файлу /var/www/mysite/mysite_rest/api/index.php?url=* , и выполняются на стороне php, через php-fpm
example.com/* - пытаемся найти файл в папке /var/www/mysite/mysite_rest только html страница

Как сконфигурирован:
server {
listen 80;
server_name example.com;
#    return 301 https://$host$request_uri;
return 301 https://example.com;
rewrite ^ https://example.com$request_uri? permanent;

client_max_body_size 350M;
}

server {
listen 443 ssl http2;
server_name example.com;

charset UTF-8;

##
rewrite ^/(.*)/$ /$1 permanent;
rewrite ^/api/(.*)$ /api/index.php?_url=/$1 last;
rewrite ^/api$ /api/index.php?_url=/ last;

##

location / {
root /var/www/mysite/mysite_rest;
charset utf-8;
index index.php index.html;
}

location /api {
        internal;
        root /var/www/mysite/mysite_rest/api;
        index index.php;
        include /etc/nginx/fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
 #            fastcgi_pass unix:/var/run/php7.1-fpm.sock;
        fastcgi_pass 127.0.0.1:9000;
         #    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
       fastcgi_param SCRIPT_FILENAME /var/www/mysite/mysite_rest/api/index.php;
   fastcgi_param SCRIPT_NAME index.php;
        fastcgi_param HTTPS on;
#        fastcgi_param HTTP_HTTPS on;
    fastcgi_param REQUEST_SCHEME https;
    fastcgi_param SERVER_PORT 443;

   }         
}


Всё работает.

ЗАДАЧА:
Поставить рядом wordpress. Wordpress поставил в var/www/mysite/mysite_rest/wp

Добавил в конфиг:
#    location /wp {
        internal;
        root /var/www/mysite/wp;
        index index.php;
        include /etc/nginx/fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
#            fastcgi_pass unix:/var/run/php7.1-fpm.sock;
        fastcgi_pass 127.0.0.1:9000;
        #    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
       fastcgi_param SCRIPT_FILENAME /var/www/mysite/wp/index.php;
   fastcgi_param SCRIPT_NAME index.php;
#            fastcgi_param HTTPS on;
    fastcgi_param HTTP_HTTPS on;
    fastcgi_param REQUEST_SCHEME https;
    fastcgi_param SERVER_PORT 443;
}


Результат: URL example.com/wp перезаписывается как https://example.comindex.php/wp-admin/install.php
При раскоменченном internal - 404. Что делаю не так?
  • Вопрос задан
  • 293 просмотра
Пригласить эксперта
Ответы на вопрос 2
@dodo512
location /wp {
    root /var/www/mysite;

    try_files $uri /wp/index.php?args;

    location ~ \.php$ {
            include /etc/nginx/fastcgi_params;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param HTTPS on;
    }
}
Ответ написан
@Mishman7 Автор вопроса
В итоге, рабочий location в моём случае:
location ^~ /wp {
root /var/www/mysite/mysite_rest;
index index.php index.html index.htm;
try_files $uri $uri/ /wp/index.php;

location ~ \.php {
    fastcgi_split_path_info ^(.*\.php)(.*)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
    fastcgi_pass 127.0.0.1:9000;
}


НО ПРИ ЭТОМ было убрано rewrite ^/(.*)/$ /$1 permanent;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы