[시놀로지] NGINX + PHP7.0 html 확장자 php 먹히게 하는 방법
웹서치를 아무리 해봐도 제가 딱 원하는 정보가 없어서 정리해봅니다.
시놀로지 나스에 웹호스팅 서비스가 가능한데 WebStation + nginx + php7.0 기준으로 설명합니다.
Apache2.4 + PHP7.0 환경도 설명을 추가합니다.
index.php 파일은 php 코드가 실행이 되는데 index.html 파일은 먹히지 않아서 어떻게 하다보니 access denied 까지 에러가 뜨는군요~
인터넷에 설명된 방법만으론 뭔가 부족하다는 이야기입니다.
sudo -i 로 root 권한을 가진 다음에 아래 처럼 진행하면 됩니다.
1. nginx 환경 설정 추가
# cat /etc/nginx/app.d/server.webstation-vhost.conf
...
server {
...
location ~* \.(php[345]?|phtml)$ {
fastcgi_pass unix:/run/php-fpm/php-642a9f1e-0d20-4664-8349-1d34f6c509de.sock;
fastcgi_param HOST "itrooms.synology.me";
include fastcgi.conf;
}
include /usr/local/etc/nginx/conf.d/8e3fecda-aa57-45f8-a907-5909a54577b9/user.conf*;
}
위 설정 파일은 주기적으로 원래대로 돌아가는 파일입니다. ( 아무리 편집해서 저장해도 어느 순간 원래의 내용으로 돌아감 )
그래서 아래 부분에 보시면 user.conf* 부분이 있습니다.
/usr/local/etc/nginx/conf.d/나스마다폴더명이다름/user.conf* 인데 이 파일명으로 설정 파일을 만들어 주어야 합니다.
# vi /usr/local/etc/nginx/conf.d/8e3fecda-aa57-45f8-a907-5909a54577b9/user.conf.php
location ~* \.(php[345]?|phtml|html)$ {
fastcgi_pass unix:/run/php-fpm/php-642a9f1e-0d20-4664-8349-1d34f6c509de.sock;
fastcgi_param HOST "itrooms.synology.me";
include fastcgi.conf;
}
위에서 location 내용 부분을 복사해서 html 부분을 추가해서 /usr/local/etc/nginx/conf.d/나스마다폴더명이다름/user.conf.php 파일로 저장합니다.
2. PHP fpm.conf 파일 수정
# cat /usr/syno/etc/packages/WebStation/WebStation.json
{
"default" :
{
"backend" : 2,
"php" : "649f1e2a-200d-4646-9384-f609c51d34de",
"userdir" : null
},
"version" : 2
}
# cat /usr/syno/etc/packages/WebStation/php_profile/649f1e2a-200d-4646-9384-f609c51d34de/fpm.conf
[global]
pid = /run/php-fpm/php70-649f1e2a-200d-4646-9384-f609c51d34de.pid
error_log=syslog
syslog.facility = daemon
syslog.ident = php70-fpm
log_level = warning
daemonize = no
[www]
user = http
group = http
listen = /run/php-fpm/php-649f1e2a-200d-4646-9384-f609c51d34de.sock
listen.owner = http
listen.group = http
listen.mode = 0660
pm = dynamic
pm.max_children = 20
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
security.limit_extensions = .php .php3 .php4 .php5 .phtml .html
fpm.conf 파일도 나스마다 폴더 위치가 다릅니다. /usr/syno/etc/packages/WebStation/WebStation.json 파일에서 폴더명을 알아낼 수가 있습니다.
알아낸 다음에 fpm.conf 파일에서 security.limit_extensions = .php .php3 .php4 .php5 .phtml 부분을 찾아서 .html 을 추가하고 저장합니다.
엔진엑스를 재시작하고 WebStation 도 재시작 한다음 확인하시면 됩니다.
synoservice --restart nginx
웹스테이션은 gui 에서 해주세요~ 명령어로 시도해 보니 잘 안되더군요~
Apache2.4 + PHP7.0 에서 html 확장자에서 php 코드가 먹히게 하는 방법입니다.
1. 아파치 설정 추가
# cat /usr/local/etc/apache24/sites-enabled/httpd-vhost.conf
...
<VirtualHost *:8080>
...
<FilesMatch "\.(php[345]?|phtml)$">
SetHandler "proxy:unix:/run/php-fpm/php-649f1e2a-200d-4646-9384-f609c51d34de.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
# vi /usr/local/etc/apache24/sites-enabled/php.conf
#AddType application/x-httpd-php .html
<FilesMatch "\.(php[345]?|phtml|html)$">
SetHandler "proxy:unix:/run/php-fpm/php-649f1e2a-200d-4646-9384-f609c51d34de.sock|fcgi://localhost"
</FilesMatch>
/usr/local/etc/apache24/siteshttpd-vhost.conf 파일에서 수정하면 좋겠지만 이 파일 또한 원래대로 돌아가는 파일입니다.
그래서 파일을 추가하여야 합니다.
/usr/local/etc/apache24/sites-enabled/php.conf 파일명으로 위 내용을 추가하고 저장합니다.
2. PHP fpm.conf 파일 수정
이 부분의 위의 nginx 설정과 동일합니다.
웹스테이션을 재시작 합니다.