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에서 작성했던대로 웹서버를 생성하고 정적 웹페이지를 호스팅한다.
'Network, Web' 카테고리의 다른 글
[Network] HTTP와 HTTP의 여러버전들 (0) | 2023.04.06 |
---|---|
[Network] 소켓과 포트의 의미와 차이점 (0) | 2023.04.06 |
[Network] HTTP 상태 코드 정리 (0) | 2023.03.16 |
[Network/Database] HTTP의 메소드와 데이터베이스의 CRUD (2) | 2023.03.16 |
[Network] DNS의 질의과정은 어떻게 될까? (0) | 2023.03.15 |