У меня есть существующее приложение 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";
}