programing

입력 파일 오류가 없는 프록시 패스를 사용하여 Nginx로 하위 디렉토리에서 워드 프레스

padding 2023. 9. 20. 20:10
반응형

입력 파일 오류가 없는 프록시 패스를 사용하여 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 파일을 찾을 수 없는 것으로 알고 있습니다.

누군가 도와줄 수 있기를..

특정할 수 있어야 합니다.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;

이것은 워드프레스 문서NGINX 문서에서 나온 것입니다.

접두사를 억제하기 위해 /blog 경로를 다시 쓸 수도 있습니까?

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

이유는 업스트림이 다른 paramie extension .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;
}

이것이 미래에 다른 사람에게 도움이 되기를 바랍니다.

언급URL : https://stackoverflow.com/questions/41701568/wordpress-on-sub-directory-with-nginx-using-proxy-pass-with-no-input-file-error

반응형