PHP

Nginx + php-fpm 환경에서 *.html 에서도 PHP 실행할 수 있도록 설정하기

오랜만에 Nginx 와 php-fpm 환경 조합을 하는데 하필 *.html 확장자 파일에서도 PHP 구문이 실행되어야 정상적으로 웹사이트가 돌아가는 문제가 있었습니다. 안그러면 단순 html 문서로만 인식해서 <?php … ?> 등 php 소스 부분도 그대로 노출되고 제대로 페이지가 출력되지 않습니다.

예전에는 많이 설정해서 쓰긴 했는데 갑자기 설정하려니 잘 기억이 나지 않아 적어둡니다.

Nginx 설정

php-fpm 연동하는 부분에 파일 확장자 필터를 아래와 같이 조정해야 합니다.

        # pass PHP scripts to FastCGI server
        # 
        # 기존 > location ~ \.php$ 부분을 아래와 같이 바꿔줍니다.
        location ~ \.(php|html|htm)$ {
                include snippets/fastcgi-php.conf;

                # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/run/php/php5.6-fpm.sock;
                # With php-cgi (or other tcp sockets):
                #fastcgi_pass 127.0.0.1:9000;
        }

php-fpm 설정

Ubuntu 22.04 기준 /etc/php/fpm/pool.d/ (혹은 5.6 설치용 ppa:ondrej/php 저장소를 사용하는 경우 /etc/php/5.6/fpm/pool.d/) 경로에 있는 www.conf 설정 파일을 아래와 같이 수정하면 됩니다.

;아래 주석으로 되어 있는 설정으로 찾아 주석을 풀고 필요한 확장자들을 추가해 줍니다.
;security.limit_extensions = .php .php3 .php4 .php5
security.limit_extensions = .php .php3 .php4 .php5 .html .htm

서버 재시작

모든 설정을 마쳤다면 아래와 같이 Nginx 서버 및 php-fpm 서버를 재시작합니다.

# sudo systemctl restart nginx
# sudo systemctl restart php-fpm

이제 웹브라우저로 접속해 보면 정상적으로 *.html 파일도 PHP 실행 결과로 출력될 것입니다. ^ㅇ^