2017-01-17 5 views
6

Надеюсь, вы сможете помочь, но я получаю ошибку ниже при попытке получить доступ к разделу администрирования из блога.Wordpress на подкаталоге с Nginx с использованием прокси-прохода без входного файла Ошибка файла

Не указан входной файл.

Настоящий блог работает нормально, но не области входа/администрирования.

Согласно заголовку, блог находится на отдельном сервере, являющемся основным доменом, и использовал прокси-сервер для пересылки запросов на него так.

upstream blog { 
    server 111.111.111.111:443 weight=2 max_fails=3 fail_timeout=60s; 
} 

server{ 
    ... 
    location /blog { 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $remote_addr; 
     proxy_set_header Host $host; 
     proxy_pass https://blog; 
    } 
} 

Настройки nginx, которые у меня есть на сервере блога, следующие.

server { 
    listen 443 ssl http2; 
    listen [::]:443 ssl http2; 
    server_name www.domain.com; 
    root /home/www.domain.com/public; 

    add_header X-Frame-Options "SAMEORIGIN"; 
    add_header X-XSS-Protection "1; mode=block"; 
    add_header X-Content-Type-Options "nosniff"; 

    index index.html index.htm index.php; 

    charset utf-8; 

    location/{ 
     try_files $uri $uri/ /blog/index.php?$query_string; 
    } 

    error_log /var/log/nginx/www.domain.com-error.log error; 

    error_page 404 /index.php; 

    location ~ \.php$ { 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php/php5.6-fpm.sock; 
     fastcgi_index index.php; 
     include fastcgi_params; 
    } 

    location ~ /\.ht { 
     deny all; 
    } 

} 

Здесь приведены ссылки fastcgi_params, если это помогает.

fastcgi_param QUERY_STRING  $query_string; 
fastcgi_param REQUEST_METHOD  $request_method; 
fastcgi_param CONTENT_TYPE  $content_type; 
fastcgi_param CONTENT_LENGTH  $content_length; 
fastcgi_param SCRIPT_FILENAME  $request_filename; 
fastcgi_param SCRIPT_NAME  $fastcgi_script_name; 
fastcgi_param REQUEST_URI  $request_uri; 
fastcgi_param DOCUMENT_URI  $document_uri; 
fastcgi_param DOCUMENT_ROOT  $document_root; 
fastcgi_param SERVER_PROTOCOL  $server_protocol; 
fastcgi_param GATEWAY_INTERFACE CGI/1.1; 
fastcgi_param SERVER_SOFTWARE  nginx/$nginx_version; 
fastcgi_param REMOTE_ADDR  $remote_addr; 
fastcgi_param REMOTE_PORT  $remote_port; 
fastcgi_param SERVER_ADDR  $server_addr; 
fastcgi_param SERVER_PORT  $server_port; 
fastcgi_param SERVER_NAME  $server_name; 
fastcgi_param HTTPS   $https if_not_empty; 
fastcgi_param REDIRECT_STATUS  200; 
fastcgi_param HTTP_PROXY ""; 

Я понимаю, что считаю, что PHP не может найти файл index.php?

Надежда кто-то может помочь ..

+0

Существует 'fastcgi_param SCRIPT_FILENAME' существует в' fastcgi_params'? –

+0

Да. Если вы обновляете, я добавил что там. – Lee

+0

Является ли запросы на второй сервер напрямую работать нормально? И ошибка только при запросе через первый сервер? –

ответ

0

Причина была выше по потоку не позволяет какой-либо другой Params т.е. расширение .php, это было выше изменение местоположения ..

location ^~ /blog { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_set_header Host $host; 
    proxy_pass https://blog; 
} 

Hopes это помогает кому-либо еще в будущем.

1

Вы должны быть в состоянии указать только index index.php;.

Вы должны также изменить location/{ try_files $uri $uri/ /blog/index.php?$query_string; } к location/{ try_files $uri $uri/ /blog/index.php?$args; }

и изменения:

fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;

к:

fastcgi_split_path_info ^(/blog)(/.*)$; fastcgi_pass php;

Это исходит из WordPress documentation, а также NGINX documentation.

+0

Извините, еще нет ... – Lee

0

Возможно, перепишите путь/блог, чтобы прервать префикс?

server{ 
    ... 
    location /blog { 

     #strip the '/blog' prefix 
     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 https://blog; 
    } 
} 
+0

Извините, не понимаю. Вы хотите удалить часть местоположения/блога? – Lee

+0

Я говорю, что вы перенаправляете URL-адреса без «/ blog», ngnix будет внутренне удалять эту часть. Когда вы получаете доступ/blog/page1, сервер uppress wordpress получит/page1 –

+0

Добавление этой строки дает мне 403. Я удалил префикс/blog в файле nginx блога и все еще 403 – Lee