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

Почему я не могу получить доступ к wp-admin с этой установкой Nginx + Ruby On Rails + WordPress?

Вот моя единственная настройка 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 вам поможет.