Nginx 0.7.43은 Wordpress 사이트를 Apache 2.4 + PHP 5.6으로 프록시패스합니다.

Nginx 0.7.43은 Wordpress 사이트를 Apache 2.4 + PHP 5.6으로 프록시패스합니다.

저는 포트 80에서 실행되는 기존 nginx를 사용하여 Wordpress 웹 사이트를 제공하는 Apache에 대한 프록시패스를 시도하고 있습니다.

nginx 섹션이 추가되었습니다(일부 주석이 달린 테스트는 의도적으로 남겨두었습니다. 너무 많은 버전을 시도했지만 잘못된 것 같으면 죄송합니다).

upstream wordpress {
    server 127.0.0.1:5000;
}

server {
    server_name media.raw-news.net;
    access_log /home/plumi/PLUMI/plumi.app/var/log/wordpress-access.log;
    error_log /home/plumi/PLUMI/plumi.app/var/log/wordpress-error.log;

    #root /usr/local/apache2/htdocs/;

    location / {
        proxy_redirect off;
        proxy_pass http://wordpress;
        proxy_connect_timeout 75;
        proxy_read_timeout 185;
    }

 location ~ .*\\.(php)$ {

  proxy_pass         http://wordpress;
  proxy_redirect     off;

  proxy_set_header   Host             $host;
  proxy_set_header   X-Real-IP        $remote_addr;
  proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

  client_max_body_size       10m;
  client_body_buffer_size    128k;

  proxy_connect_timeout      90;
  proxy_send_timeout         90;
  proxy_read_timeout         90;

  proxy_buffer_size          4k;
  proxy_buffers              4 32k;
  proxy_busy_buffers_size    64k;
  proxy_temp_file_write_size 64k;
 }

}

내 Apache는 PHP가 활성화된 포트 5000에서 실행 중입니다(관련 PHP 항목만 해당).

LoadModule php5_module        modules/libphp5.so

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

AddType text/html .php
AddHandler php5-script  .php

현재 효과는 다음과 같습니다.

Chrome: Wordpress 웹사이트가 표시되지만 PHP 코드가 실행되지 않는 것 같습니다.. HTML 부분만 보입니다.

Firefox: Wordpress 사이트를 탐색하면 127.0.0.1에서 리디렉션이 발생합니다...

사파리: 작동해요! 표시됩니다...

이상하게도 내가 탐색하면 모든 브라우저에서http://media.example.net/wp-admin그리고 로그인을 수행합니다.. 대시보드에 들어가면 모든 것이 완벽하게 표시됩니다!

모든 이미지가 있고 PHP 코드가 실행됩니다... 하지만 대시보드에 로그인한 후에만 가능합니다!

내가 여기서 무엇을 놓치고 있습니까?

저는 Apache에서 VirtualHost를 만들지 않았습니다. 이는 기본 DocumentRoot 내에 Wordpress 사이트가 있는 간단한 Apache 2.4 서버입니다.

프로덕션 웹 사이트가 실행 중이므로 최신 nginx 버전으로 마이그레이션할 수 없습니다.

Plumi가 공식적으로 Debian 8에서 4.5.2를 출시할 때 마이그레이션이 이미 계획되어 있습니다.

예를 들어 127.0.0.1로 리디렉션하지 않고 Apache에서 PHP 코드를 올바르게 실행하지 않고 모든 Wordpress 콘텐츠를 내 Apache에 올바르게 프록시 전달하는 기본/작업 구성이 있습니까?

감사해요 !

답변1

Apache 인스턴스에 대한 프록싱을 위해 다음과 같은 추가 헤더를 설정(및 사용)할 수 있습니다.

proxy_set_header    X-Real-IP         $remote_addr;
proxy_set_header    X-Forwarded-For   $proxy_add_x_forwarded_for;

대부분의 백엔드(Apache 및 PHP 포함)는 이들 중 하나 이상과 함께 작동하므로 $Host어떤 사이트가 요청되고 있는지 알 수 있습니다.

이것~해야 한다그런 다음 Apache의 PHP가 추가 데이터를 인식하고 본질적으로 "아, 이것은 localhost에서 시작된 것이 아니며 실제 출처는 $remote_addr"입니다. ( $remote_addr실제 소스의 실제 IP 주소를 나타내는 변수이며 X-Forwarded-For유사하게 작동합니다.)

관련 정보