Вот моя единственная настройка Linux VPS:
Вот чего я хочу:
Оба приложения работают в одном домене. Все URI, начинающиеся с / blog или / wp- или заканчивающиеся на .php, должны идти на сервер fastcgi. Все остальное должно идти на Тонкий сервер.
Вот моя проблема:
Приложение My Rails работает нормально. Передняя часть моего блога WordPress работает нормально. Однако я не могу получить доступ к панели администратора WordPress (/ wp-admin или /wp-login.php). Проблема должна быть в моей конфигурации Nginx.
Вот моя конфигурация Nginx:
upstream myserver {
server unix:/tmp/myserver.0.sock;
server unix:/tmp/myserver.1.sock;
}
server {
server_name myserver;
root /path/to/rails/app/public;
index index.html;
access_log /path/to/rails/app/log/access.log;
error_log /path/to/rails/app/log/error.log;
<snip>
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect false;
if (-f $document_root/cache$request_uri/index.html) {
rewrite (.*) /cache$1/index.html break;
}
if (-f $document_root/cache$request_uri.html) {
rewrite (.*) /cache$1.html break;
}
if (!-f $request_filename) {
proxy_pass http://myserver;
break;
}
}
location ~ /(blog|wp-).* {
root /path/to/wordpress;
index index.php;
access_log /path/to/wordpress/log/access.log;
error_log /path/to/wordpress/log/error.log;
if (!-e $request_filename) {
rewrite ^ /index.php last;
}
}
#
# pass the PHP scripts to FastCGI server
location ~ \.php$ {
root /path/to/wordpress;
index index.php;
access_log /path/to/wordpress/log/access.log;
error_log /path/to/wordpress/log/error.log;
fastcgi_pass unix:/tmp/fcgi.sock;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /path/to/wordpress/$fastcgi_script_name;
}
}
Когда я включаю запись отладки в журнал ошибок WordPress. Я никогда не вижу совпадения для / wp-admin, когда я его запрашиваю. Это наводит меня на мысль, что запрос обрабатывается location /
rule, которое предназначено для приложения Rails. Когда я делаю запрос / wp-admin, браузер предлагает мне «сохранить как» какой-то файл с именем «скачать».
Обратите внимание, что ресурсы в каталоге wp-content обслуживаются нормально, когда попадают в location ~ /(blog|wp-).*
правило (почему там не попадает / wp-admin ?!)
Мой вопрос:
Какие правила мне нужны, чтобы получить желаемую настройку и получить доступ к панели администратора WP?
Заранее спасибо.
Я нашел обходной путь. Я изменился location ~ /(blog|wp-).*
к location ~ /blog.*
и начал использовать /wp-admin/index.php
в моей просьбе. Тогда я получил то, что хотел. Я до сих пор не понял, как /wp-admin
дают тот же результат, что и /wp-admin/index.php
, но я могу жить без этого. Все остальное работает как положено.
Вики-статья Nginx о Wordpress должна помочь: http://wiki.nginx.org/Wordpress
У вас есть правильный корень и индекс, поэтому я предполагаю, что это просто странная проверка if и try_files вам поможет.