HTTP 기반의 서버를 생성하는 소프트웨어인 nginx를 사용해, 웹 서버(Web Server)를 생성하여 정적 웹페이지 호스팅할 수 있다.

 

nginx 설치

먼저 nginx를 사용하기 위해서 apt get 명령어를 사용해 nginx를 설치해준다.

sudo apt-get update
sudo apt-get install nginx

설치를 완료했다면

sudo nginx -v

명령어로 설치된 nginx의 버전을 확인할 수 있다.

 

nginx 로 정적 콘텐츠 호스팅하기

nginx의 환경 설정파일 nginx.conf

일반적으로 환경 설정 파일은 관리자가 편집하거나 프로그램을 분석할 수 있는 텍스트 파일을 말한다.

nginx도 nginx.conf라는 텍스트 파일에 여러 가지 값을 지정해 프로그램의 작동 방법을 결정 할 수 있다.

nginx.conf 파일의 내용은 아래와 같다.

user www-data; #웹 서버가 실행되는 사용자를 설정한다. 기본값은 'www-data'.
worker_processes auto; #동시에 처리할 워커 프로세스의 개수를 설정한다. 'auto'는 시스템의 CPU 코어 수에 따라 자동으로 할당.
pid /run/nginx.pid; #nginx 프로세스 ID 파일의 위치를 설정한다.
include /etc/nginx/modules-enabled/*.conf; #활성화된 모듈의 설정 파일을 불러온다.

# 이벤트 처리에 대한 설정 블록이다.
# 워커 프로세스당 연결 수를 정의하는 worker_connections와 같은 설정이 포함된다.
events { 
    worker_connections 768;
    # multi_accept on;
}

# HTTP 서버에 대한 전체 설정 블록이다.
# 기본 설정, SSL 설정, 로깅 설정, Gzip 설정 등이 포함된다.
http {
    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types; #지원되는 MIME 타입을 포함하는 파일의 위치를 지정한다.
    default_type application/octet-stream; #MIME 타입이 지정되지 않은 경우 기본값으로 사용되는 타입이다.

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #사용할 SSL 프로토콜을 설정한다. SSLv3는 POODLE 취약점 때문에 사용하지 않는다.Dropping SSLv3, ref: POODLE 
    ssl_prefer_server_ciphers on; #SSL/TLS 연결 시 서버 측이 지정한 암호 스위트를 클라이언트 측보다 우선시하는지 여부를 설정한다.

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log; #접근 로그 파일의 위치를 지정한다.
    error_log /var/log/nginx/error.log; #에러 로그 파일의 위치를 지정해준다.

    ##
    # Gzip Settings
    ##

    gzip on; #Gzip 압축 기능을 활성화한다.

    # gzip_vary on; # Gzip 압축 여부에 따라 Vary 헤더를 설정하는 옵션. 기본값은 'off'.
    # gzip_proxied any; # 프록시된 요청에 대해 Gzip 압축을 적용할 조건을 설정합니다. 'any'는 모든 프록시 요청에 압축을 적용합니다.
    # gzip_comp_level 6; #  Gzip 압축 수준을 설정. 1(최소)부터 9(최대)까지 설정할 수 있으며, 기본값은 1.
    # gzip_buffers 16 8k; #  Gzip 압축에 사용되는 버퍼의 개수와 크기를 설정.
    # gzip_http_version 1.1; # Gzip 압축을 적용할 HTTP 버전을 설정. 기본값은 1.0.
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    #Gzip 압축을 적용할 MIME 타입을 설정한다. 기본적으로 텍스트와 애플리케이션 타입에 대해 압축이 적용된다.
    
    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf; #추가 설정 파일들을 포함하는 디렉토리다.
    include /etc/nginx/sites-enabled/*; #활성화된 사이트 설정 파일들을 포함하는 디렉토리다. /etc/nginx/sites-available/에 있는 설정 파일들을 여기에 심볼릭 링크로 연결하여 사용한다.
}

 

설정파일 작성

웹 서비스를 호스팅하기 위해서는 위의 nginx.conf 파일에다 제공할 웹서버의 정보를 담는 server 블록과 제공할 웹페이지의 소스 위치를 담는 location블록을 생성해줘야한다.

 

server {
	listen 80; #읽어올 포트 
	server_name your_domain.com www.your_domain.com;#서버 도메인 이름

	location / {
	    root /var/www/mywebsite; #제공할 웹페이지의 위치
		index index.html; #인덱스 파일 이름
	}
 }
 ```

위는 server블록과 location블록 작성의 예시이다.

 

변경사항 적용 및 웹 서버 생성

설정 파일 링크를 생성한다

$ sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/

nginx를 재시작한다.

$ sudo systemctl restart nginx

 

여기까지 문제없이 실행했다면 nginx.conf에서 작성했던대로 웹서버를 생성하고 정적 웹페이지를 호스팅한다.

+ Recent posts