Назад | Перейти на главную страницу

Размещение блога Wordpress с использованием Nginx в качестве подкаталога

У меня есть существующее приложение Meteor, и я использую nginx в качестве своего сервера, скажем, на example.com

Я хочу добавить блог на wordpress, который должен быть доступен по адресу example.com/blog

Я также желательно, чтобы мой блог существовал на собственном капле (сервере), но если он должен быть на той же капле (сервере), тогда все в порядке.

Как мне это сделать?

Мне удалось заставить его работать с другим серверным блоком с другим server_name на blog.example.com. Я также получил статические файлы, которые будут доступны в подкаталоге example.com/blog/index.html. Здесь все существует на одной и той же капле (сервере).

Но я не могу сделать приложение Wordpress доступным через example.com/blog.

РЕДАКТИРОВАТЬ:

В итоге я создал новый экземпляр сервера (дроплет), настроил его с помощью стека LEMP и NGINX. Работает, если я пытаюсь получить доступ к IP.

Теперь на моем реальном сервере добавлен блок местоположения

location /blog {
    rewrite ^/blog/(.*)$ /$1 break;

    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://wordpress-server-ip;
    proxy_redirect off;
}

Моя новая проблема заключается в том, что мой блог не может загружать файлы .css в Chrome, потому что мой прокси-сервер настроен на https, а wordpress загружает файлы через http. Вы можете проверить это на https://juerix.com/blog.

Итак, я вошел в свой wp-config файл и изменил адрес сайта и wordpress https://juerix.com/blog. Не помогло.

Это заняло у меня время, чтобы разобраться. Ключ находится в строке try_files.

# Default location to serve
location / {
  # If the file can't be found try adding a slash on the end - it might be
  # a directory the client is looking for. Then try the Wordpress blog URL
  # this might send a few requests to PHP that don't need to go that way
  try_files $uri $uri/ /blog/index.php?$args;

}

Вот еще кое-что, что я нашел полезным

# Add trailing slash to */wp-admin requests.
rewrite /blog/wp-admin$ $scheme://$host$uri/ permanent;

Вот еще один блок местоположения, который я использовал в качестве примера

# Rate limit wp-login.php to help prevent brute force attacks
location = /blog/wp-login.php {
  # Next line applies the rate limit defined above
  limit_req zone=login burst=3;
  fastcgi_keep_conn on;

  fastcgi_pass php56-fpm;
  include        fastcgi_params;
  fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
  more_clear_headers "Cache-Control";
   more_clear_headers Server; more_clear_headers "Pragma"; more_clear_headers "Expires";

  # No caching
  more_clear_headers "Cache-Control";
  add_header Cache-Control "private, max-age=0, no-cache, no-store";
  more_clear_headers "Expires";
}