Apache의 역방향 프록시인 Nginx, Php는 실행되는 대신 다운로드하라는 메시지를 표시합니다.

Apache의 역방향 프록시인 Nginx, Php는 실행되는 대신 다운로드하라는 메시지를 표시합니다.

Centos 7 서버에서 Nginx를 Apache용 역방향 프록시로 만들려고 합니다.

지금까지 내가 한 일은 다음과 같습니다.

Nginx용 구성 파일을 만듭니다.나노 /etc/nginx/conf.d/default.conf

server {
    listen   80; 

    root /usr/share/nginx/html/; 
    index index.php index.html index.htm;

    server_name _; 

    location / {
    try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {

    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:8080;

     }

     location ~ /\.ht {
            deny all;
    }
}

2줄을 바꾸세요/etc/httpd/conf/httpd.conf:

Listen 127.0.0.1:8080
DocumentRoot "/usr/share/nginx/html/" 

/usr/share/nginx/html에 info.php라는 파일을 만들어 넣어두었는데 <?php infophp();?>페이지를 로딩하려고 하면http://My_Ip/info.php파일을 다운로드하라는 팝업이 나타나는 반면 파일이 실행되기를 원합니다.

이 명령을 전달했습니다.아파치 -M | grep내 Apache 웹 서버에 Php 모듈이 있는지 확인하기 위해 php를 실행하면 "php7_module(공유)"이 표시되므로 그럴 것 같습니다.

어떤 도움이라도 주시면 감사하겠습니다.

헨리

ps: 계속하면http://내_IP기본 Nginx 홈 페이지 p.s2가 표시됩니다. 질문하시는 분들을 위해 이미 serverfault(오류 403)에 관련 문제에 대해 게시했지만 더 이상 문제가 없는 것 같습니다.http://My_IP/any_css_file.css예를 들어 잘 표시되고 오류도 없습니다)

답변1

PHP 스크립트를 실행하려면 서버에서 PHP FPM 인스턴스를 실행해야 합니다. 실행하면 확인할 수 있다

find / -type d -iname *fpm*

결과가 일부 반환되면 이미 설치된 것입니다. 이제 수신 대기 중인 포트/소켓을 찾으려면 다음을 실행할 수 있습니다.

find / -type d -iname *fpm* | xargs grep -r "^listen[= ]"

그러면 다음과 같은 내용이 반환됩니다.

/etc/php/7.2/fpm/pool.d/www.conf:listen = /run/php/php7.2-fpm.sock

Nginx 구성 디렉터리(보통 /etc/nginx/)에 이미 파일이 있을 수 있습니다 fastcgi_params. 그렇지 않은 경우 파일을 만들고 예제를 복사하세요.여기

그런 다음 구성 파일을 포함하도록 PHP 위치 블록을 변경하고 다음과 같이 이전 명령에서 반환된 포트/소켓을 사용하여 요청을 php fpm에 전달합니다.

location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        include fastcgi_params;
    }

이제 Nginx를 다시 시작하면 작동합니다.

관련 정보