본문으로 바로가기

아래의 내용은 웹호스팅을 위한 가상호스트 설정은 아닙니다. 그저 하나의 서버에 여러개의 웹서비스를 제공할 목적이며 웹호스팅을 위해서는 디렉토리 권한을 염두해 두어야 합니다.

가상호스트 구조

가상호스트를 위한 간단한 디렉토리 구조

웹루트 : /var/www/도메인명/public_html
웹로그 : /var/www/도메인명/logs
가상호스트 설정 : /usr/local/nginx/sites-enabled/도메인명.conf

가상호스트 디렉토리 생성

가상호스트 사용을 위한 웹루트 디렉토리들을 생성한다.

sudo mkdir -p /var/www/example.com/public_html
sudo mkdir /var/www/example.com/logs

생성한 디렉토리의 권한을 변경

sudo chown -R www-data:www-data /var/www/example.com/public_html

웹서비스의 관리자를 www-data 그룹에 추가하여 FTP 접속및 디렉토리및 파일을 수정/변경

sudo usermod -a -G www-data unclepapa

우분투 12.04 의 UMASK 값은 002 이기에 그룹에도 자동으로 7의 권한을 얻는다.

가상호스트로 사용할 설정파일 디렉토리 생성(아파치처럼 디렉토리 명을 명명했다).

sudo mkdir /usr/local/nginx/sites-enabled

가상호스트 예제

sites-enabled 디렉토리 이하에 도메인명으로 가상호스트 설정파일을 위치시킨다.

sudo vi /usr/local/nginx/sites-enalbe/exampl.com.conf

  server {
    listen       80; 
    server_name  www.example.com example.com;

    #charset koi8-r;
    access_log  /var/www/example.com/logs/access.log  main;
    error_log   /var/www/example.com/logs/error.log;

    location / { 
      root   /var/www/uzuro.com/public_html;
      index  index.html index.htm index.php;
    }   

    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
      root   html;
    }   

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #   
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}  

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #   
    location ~ \.php$ {
      #    root           html;
      #    fastcgi_pass   127.0.0.1:9000;
      fastcgi_pass   unix:/var/run/php5-fpm.sock;
      fastcgi_index  index.php;
      #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
      fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      include        fastcgi_params;
    }   
  }   

NGINX 설정 변경

엔진엑스 설정파일을 아래와 같이 수정하고 마지막에 가상호스트 설정을 포함한다.

sudo vi /usr/local/nginx/conf/nginx.conf

  worker_processes  1;  

  events {
    worker_connections  1024;
  }

  http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on; 
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65; 
    #gzip  on;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                       '$status $body_bytes_sent "$http_referer" '
                       '"$http_user_agent" "$http_x_forwarded_for"';

    include ../sites-enabled/*;
  }

default 가상호스트 설정

사용되지 않는 서브도메인이나 IP주소로 접속할 경우에 보여줄 페이지를 설정하는 것이다.

sudo vi /usr/local/nginx/sites-enabled/default.conf

  server {
    listen       80 default;
    server_name  _;  

    location / { 
      root   /var/www/default;
      index  index.html index.htm;
    }   
  } 

사이트 루트 디렉토리 생성

sudo mkdir /var/www/default