크세노폰의 IT 누리사랑방

확장자가 HTML로 끝나도 PHP가 실행되게 하기(NGINX + PHP) 본문

기술과 지침서/Web

확장자가 HTML로 끝나도 PHP가 실행되게 하기(NGINX + PHP)

Xenophon 2015. 1. 29. 07:30
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

어제 퇴근하기 1시간 전, 평생교육원으로부터 프로젝트를 부탁받았습니다. 홈페이지 전반을 개선해달라는 요청이었는데 아무래도 전체적인 메인을 모두 고쳐야 하는 프로젝트라서 시간이 좀 걸릴 것 같습니다.

여하튼 페이지 전체 파일을 제 개발서버에 올려두고 개발하려는 찰나에 문제가 생겼습니다. 확장자가 php로 끝나지 않고, html 로 끝나서 페이지가 읽히지 않는 문제였는데요.
오늘은 htm이나 html로 끝나는 확장자에서도 php파일이 마술같이 척척 잘 읽히는 방법을 소개합니다.

  1. NGINX에서 html이 읽히도록 처리해줍니다.

제가 사용하는 우분투를 기준으로 설명합니다.
/etc/nginx/sites-enabled/mydomain.host
파일에서 PHP를 읽는 코드에 추가해줍니다.

server {
server_name domain.tpl *.domain.tld;
root /home/sites/domain.tld/home/html;


location ~ .(php|htm|html|js)$ {
fastcgi_pass unix:/var/run/php-fpm.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

}

처음 default 설정에는 location ~ . php$ 로 시작하는 문구가 있을텐데 그것을 php|htm|html로 바꾸어주면 됩니다.
참, js 파일도 포함시켜주도록 합시다.

2. php의 www.conf 파일을 수정합니다.


nano /etc/php5/fpm/pool.d/www.conf
; Limits the extensions of the main script FPM will allow to parse. This can
; prevent configuration mistakes on the web server side. You should only limit
; FPM to .php extensions to prevent malicious users to use other extensions to
; exectute php code.
; Note: set an empty value to allow all extensions.
; Default Value: .php
;security.limit_extensions = .php .php3 .php4 .php5

항목을 찾습니다. 키워드를 php3으로 해서 찾으면 쉽게 찾을 수 있을겁니다.

;security.limit_extensions = .php .php3 .php4 .php5 항목에서 .htm 과 .html 을 추가해줍니다.
그렇게 한다면 이렇게 되겠지요.
security.limit_extensions = .htm .html .js .php3 .php4 php5
앞 단의 “;(세미콜론)”을 제거해주셔야 적용됩니다.


';' 세미콜론을 제거하는 것을 잊지마세요!

3. 서비스를 재시작해줍니다.


service nginx restart
service php5-fpm restart

Comments