Apache 웹 서버

eunyeong·2023년 1월 12일
0

Linux_Basic

목록 보기
3/4

Apache 웹 서버는 유닉스 기반의 NCSA HTTPd 웹 서버를 리눅스에서 동작하도록 만들어진 프로그램이다. 리눅스의 성장에 힘입어 웹 서버 중 가장 많이 사용되고 있는 웹 서버로 자리잡았음.
사용자의 요청은 HTTP 프로토콜 형식에 맞게 전송되어야 함. HTTP 요청을 웹 서버에 요청할 때 일반적으로 80/TCP 포트로 요청을 전송하나 이 포트 번호는 웹 서버 설정에서 임의로 변경할 수 있음. HTTP 요청은 웹 서버가 수신하고 처리하고, 이 웹 서버가 Apache를 의미함. Apache 웹 서버를 사용하여 웹 서버를 구성할 때 가장 많이 사용되는 웹 어플리케이션 모듈과 데이터베이스는 각각 PHP와 MariaDB(MYSQL)이다. 그래서 이 세 가지 제품을 한꺼번에 부르는 용어로 LAMP가 있음. (linux+apache+mysql+php)

웹 서버 구성

  • yum -y install httpd

  • systemctl enable httpd.service

  • systemctl start httpd

  • firewall-cmd --add-service=htttp --permanent

  • firewall-cmd --reload

  • firefox http:// [현재 ip] (ifconfig로 확인한 ip)

  • 위 방식으로 현재 동작중인 웹 페이지를 확인할 수 있음.

  • Apache 기본 설정에 포함된 웹페이지의 디렉토리 위치는 /var/www/html 임.

  • httpd 주요 파일 중 가장 중요한 설정 파일은 /etc/httpd/conf/httpd.conf 파일임. 주요 설정 항목은 아래와 같음.

    1) ServerRoot: 웹 서버의 기본 디렉토리 위치
    2) DocumentRoot: 웹 서버가 웹 서비스를 통해 표시할 디렉토리
    3) Listen: 웹 서버가 페이지 요청을 수신할 네트워크 인터페이스 및 포트를 지정
    4) Include, IncludeOptional: 주 설정 파일 외에 추가 설정을 가지고 있는 다른 파일을 설정에 포함시키는 지시어
    5) User, Group: 웹 서버 프로세서를 구동할 사용자와 그룹을 지정하는 지시어
    6) ServerAdmin: 웹 서버 에러 발생 시 에러에 관한 메일을 수신할 서버 관리자를 지정
    7) Directory: 특정 경로에 대한 지시어의 그룹
    8) AllowOverride: .htaccess 파일에 포함된 설정항목의 사용 여부를 결정 (.htacess 파일은 각 디렉토리에 생성되어 디렉토리의 개별 설정을 지정하는 용도로 사용되는 파일)
    9) Require: 인증된 사용자가 권한을 부여받았는지 확인하는 지시어
    10) Options: 특정 디렉토리에서 사용할 수 있는 기능을 설정하는 지시어
    11) IfModule: 특정 모듈의 포함 여부에 따라 조건부로 처리되는 지시어
    12) Files: 특정 파일들을 대상으로 적용되는 지시어
    13) ErrorLog, LogLevel: 웹 서버의 오류 로그와 관련된 지시어
    14) LogFormat, CustomLog: NCSA의 접근로그를 생성하고, 접근로그는 웹사이트의 접속 기록을 저장.

가상 호스트

Apache 웹 서버가 여러 웹 사이트를 서비스하도록 구성하는 것을 가상 호스트(Virtual Host)라 함.

  1. 이름 기반 가상 호스트
  • 웹 서버에 접속할 때 사용하는 이름을 기반으로 웹 사이트를 구분하는 방식. 따라서 웹 사이트의 이름과 IP 주소를 연결하는 DNS 서버 구성이 필요.
  • cat /etc/httpd/conf.d/virtualhost.conf 와 같이 설정 가능.
  1. IP 기반 가상 호스트
  • 웹 서버에 접속할 때 사용한 IP 주소를 기반으로 웹 사이트를 구분하는 방법.
  • nmcli connection modify Static +ipv4.addresses [해당 ip]/24
  • nmcli connection up Static 과 같은 명령을 사용하여 IP 주소를 추가할 수 있다.
  1. 포트 기반 가상 호스트
  • 웹 서버에 접속할 때 사용하는 포트 번호를 기반으로 웹 사이트를 구분하는 방법. 포트 번호는 한 호스트 내에서 연결하려는 서비스 또는 프로세스를 구분할 수 있는 주소이다.
  • grep ^Listen /etc/httpd/conf/httpd.conf 파일의 Listen 설정에 추구할 가상 호스트의 포트 설정을 추가함.

** 항상 변경된 설정을 사용하기 위해서는 systemctl restart httpd.service 설정을 이용한다.

HTTPS 구성

HTTP 프로토콜은 평문 전송이라는 단점을 가지고 있어 모든 정보가 암호화되지 않고 전송된다는 특징을 가짐. 이러한 문제점을 해결하기 위하여 만들어진 HTTPS 프로토콜은 SSL(Secure Socket Layer)/(Transport Layer Security) 프로토콜을 통해 전송되는 데이터를 암호화함.

  1. 암호화와 인증서
    1) 암호화
  • 대칭키 암호화 방식: 데이터를 암호화/복호화 할 때 같은 키를 사용하는 방식. 키가 노출될 위험이 있기에 키를 안전하게 교환할 수 있는 절차가 필요
  • 비대칭키 암호화 방식: 암호화/복호화 할 때 사용하는 키가 각각 다름. 각각 공개키, 개인키라고 부름.
  • 해시 암호화 방식: 원본 데이터를 복호화 하는 용도로 사용할 수 없으나, 원본 데이터의 변경을 확인하는 무결성 검증에 사용할 수 있음. 사용자가 입력한 암호를 검증해야 할 경우 사용자가 입력한 암호의 해시 값을 생성하여 암호 해시 값과 비교하여 일치 여부를 확인.

2) 인증서

  • 공개키를 기반으로 하는 인증 알고리즘에 따라 만들어진 전자 신분증
profile
아무것도 모르는 초보

0개의 댓글