2017-01-17 12 views
6

Hy vọng bạn có thể giúp đỡ nhưng tôi nhận được lỗi dưới đây khi cố truy cập phần quản trị là blog.Wordpress trên Sub Directory với Nginx sử dụng Proxy Pass với No Input Lỗi tập tin

Không có tệp đầu vào được chỉ định.

Blog thực tế hoạt động tốt nhưng không phải là khu vực đăng nhập/quản trị.

Theo tiêu đề, blog nằm trên một máy chủ riêng biệt là miền chính và đang sử dụng proxy để chuyển tiếp các yêu cầu tới nó như vậy.

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; 
    } 
} 

Cài đặt nginx tôi có trên máy chủ blog như sau.

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; 
    } 

} 

Dưới đây là fastcgi_params nếu nó cũng giúp.

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 ""; 

Tôi hiểu rằng tôi không thể tìm thấy tệp index.php?

Hy vọng ai đó có thể giúp ..

+0

'fastcgi_param SCRIPT_FILENAME' có tồn tại trong' fastcgi_params' không? –

+0

Có. Nếu bạn làm mới tôi đã thêm những gì trong đó. – Lee

+0

Yêu cầu đến máy chủ thứ hai có hoạt động tốt không? Và lỗi chỉ khi được yêu cầu qua máy chủ đầu tiên? –

Trả lời

0

Lý do là phía thượng lưu đã không cho phép bất kỳ params tức là .php đuôi khác, đây là sự thay đổi vị trí thượng nguồn ..

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; 
} 

Hy vọng điều này giúp bất cứ ai khác trong tương lai.

1

Bạn sẽ có thể chỉ định chỉ index index.php;.

Bạn cũng nên thay đổi location/{ try_files $uri $uri/ /blog/index.php?$query_string; }-location/{ try_files $uri $uri/ /blog/index.php?$args; }

và thay đổi:

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

tới:

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

này được phát ra từ WordPress documentation cũng như NGINX documentation.

+0

Xin lỗi vẫn không đi ... – Lee

0

có thể viết lại đường dẫn/blog để chặn tiền tố?

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

Xin lỗi bạn không hiểu. Bạn đang nói để xóa phần vị trí/blog? – Lee

+0

Tôi đang nói rằng bạn sẽ chuyển tiếp các URL mà không có '/ blog', ngnix sẽ xóa nội bộ một phần. Khi bạn truy cập/blog/page1 máy chủ wordpress ngược dòng sẽ nhận/page1 –

+0

Thêm dòng đó cho tôi 403. Tôi đã xóa tiền tố/blog trong tệp nginx trên blog và vẫn còn 403 – Lee

Các vấn đề liên quan