2024. 2. 19. 09:35ㆍLinux/CentOS7
웹 서비스 제공을 위한
httpd 프로그램을 설치해주자
설치를 완료했으면
/etc/httpd/conf/httpd.conf
위 경로에 존재하는 설정 파일을 살펴보자
많은 기능이 있지만
주요한 설정들만 확인해보자
31 ServerRoot "/etc/httpd" >> 서버루트의 경로로 주요설정파일,에러,로그 파일등이 있는 경로다.
42 Listen 80 >> 예시로 Listen 12.34.56.78:80 이런 식으로 사용해 어떤 IP에 서비스 할 지 정하는 것인데
현재 IP가 없고 port만 표기된 것은 모든IP의 80port로 서비스 하겠다는 것이다.
56 Include conf.modules.d/*.conf > DSO(동적공유객체)로 각종 모듈을 해당경로에서 필요할때 불러오는 기능
66 User apache >> 이 apache 서버를 실행하는 사용자를 설정하는 기능. 현재 apache로 설정
67 Group apache >> 이 apache 서버를 실행하는 사용자의 그룹을 설정하는 기능. 현재 apache로 설정
(66,67행이 모두 apache로 설정된 이유는 보안상의 이유다, 이 웹서버를 탈취 당해도, apache 계정,그룹만 탈취 당하기 때문에
공격자는 탈취했더라도 root권한을 위해서 다시 권한상승 작업을 거쳐야한다.)
86 ServerAdmin root@localhost >> 이 서버를 관리하는 관리자의 메일주소 (보안상 좋지않다.)
86 ServerAdmin web@doghj.local >> 이처럼 보안상 root 계정을 노출시키지말고 팀 메일(개인 메일x)을 사용하자
95 #ServerName http://www.example.com:80 >> DNS에 동일한 이름이 존재해야한다.
주석처리 해두면 DNS에서 가져다 쓴다, 우리는 DNS를 이용하니 주석처리 로 두자
102 <Directory />
103 AllowOverride none
104 Require all denied
105 </Directory>
위 문구는 디렉토리 지시자로서 해당 디렉토리에 대한 권한을 나타낸다.
(만약 파일을 나타내고 싶다면 <Directory /aaa/a.txt> 로 작성하면 된다)
AllowOverride none 는 사용자 인증을 사용할지 여부를 나타낸다, none = 사용안함
Require all denied 는 모든 사용자를 denied (거부)한다.
보안상 웹 서버에 접근하는 사용자들을 웹 컨텐츠들에만 접근하게해야지
루트 디렉토리에 접근하게 할 순 없기 때문에 설정해준다
119 DocumentRoot "/var/www/html" >> 웹 컨텐츠가 있는 디렉토리(변경가능)
124 <Directory "/var/www"> >>> 디렉토리 지시자
125 AllowOverride None
126 # Allow open access:
127 Require all granted
128 </Directory> >>> ''
/var/www 디렉토리에 사용자들이 접근할 수 있게 허용 되어있는 것을 볼 수 있다.
이 경로에 웹컨텐츠를 제작하면 하위 파일들도 접근이 허용된다.
144 Options Indexes FollowSymLinks
Options Indexes >> 디렉토리 리스닝 기능
(디렉토리 리스닝 : 웹서버의 특정 경로에 있는 파일들을 웹서비스를 통해 디렉토리 형식으로 보는것)
FollowSymLinks >> 심볼릭링크 허용 여부
151 AllowOverride None >> 웹컨텐츠의 인증 여부
156 Require all granted >> 웹컨첸츠의 접근 여부 (모든 접근을 허용한다.)
157 </Directory>
서로 굉장히 멀리 떨어져서 각자 다른개체로 보이겠지만 124~157행은 같은 디렉토리 지시자다!
163 <IfModule dir_module>
164 DirectoryIndex index.html
165 </IfModule>
웹 시작 페이지를 어떤 파일로 제공 할 것인지 정하는 기능
(index.html이 웹컨텐츠가 존재하는 /var/www/html/ 에 없다면 , 기본 웰컴페이지가 출력된다.
171 <Files ".ht*">
172 Require all denied
173 </Files>
사용자 인증에 관한 설정 : 사용자별 접근 제한을 위해 사용한다.
186 # Possible values include: debug, info, notice, warn, error, crit,
187 # alert, emerg.
188 #
189 LogLevel warn
로그 레벨에 관련된 설정 (warn이상의 로그만 기록한다)
레벨 | 뜻 |
emerg | 서버 가동불가의 심각한 오류 |
alert | 즉각적 조정이 필요한 상황 |
crit | 중대한 에러 |
error | 비교적 중대하지 않은 에러 |
warn | 경고 |
notice | 중대하진 않은 일반적인 메세지 |
info | 정보 |
debug | 디버그 레벨 |
위로 갈수록, 설정 파일에선 오른쪽 끝에 있을 수록 높은 로그 레벨이다.
196 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
로그의 기본적인 포멧을 간략히 나타낸 것 (User-Agent : 사용자가 사용하는 브라우저)
353 IncludeOptional conf.d/*.conf
conf.d/디렉토리 아래의 모든.conf 파일들을 포함한다는 뜻
나중에 직접 개인적인 설정을.conf로 넣어 사용할 수 있다.
설정을 살펴봤으면 임시 html 파일을 하나
/var/www/html 웹컨텐츠 디렉토리 밑에 index로 만들어주자
그다음
httpd 서비스를 시작하고
방화벽에 http 포트를 열어주자
그 후 윈도우에서 웹서버의 IP 주소로 접속해보자
접속이 완료됐다..
httpd 설정 자체는 여기서 끝인 것이다..
DNS,이중화, 사용자별 접근제한,IP별 접근제한 등을 제외하면
httpd 로 웹컨텐츠를 올리는 것 자체는 정말 간단하다!
그외 기능에 대해서도 알아보자
먼저
mv /etc/httpd/conf.d/{welcome.conf,welcome.bak}
명령
가상 호스트
기본적으론 하나의 IP당
하나의 웹 페이지만 제공할 수 있다.
이 기능을 사용하면 한 IP로 여러 웹 페이지를 제공할 수 있게 해준다.\
먼저 한 IP로 main,blog,intra 라는 페이지를 서비스해보겠다
먼저 /var/www/ 아래
기본적으로 있는 html디렉토리
blog , intra 페이지를 만들어 내부에
각각 index.html을 만들겠다.
위처럼 간단하게 세곳에 만들어주자
웹페이지 작성을 끝냈으면
가상 호스팅으로 해당 주소를 분류해주면 된다.
httpd.conf 마지막 줄에
353 IncludeOptional conf.d/*.conf 라는 문구를 기억해야한다.
conf.d 폴더 아래의 .conf 를 포함하고 있다는 것이다!
우리는 httpd.conf 맨 밑줄에 가상 호스팅을 추가해도 좋지만
conf.d/ 아래에 .conf 파일을 따로 만들어 관리,식별이 편하게 하자!
vi /etc/httpd/conf.d/virtualhost.conf 를 입력해 새로 작성하자
위처럼 index파일의 위치, 서버 주소를 입력해주자
DNS에도 intra, blog등의 주소로 찾아올 수 있게 등록해주자
그럼 이제 각각의 주소로 접속이 가능하다,
IP별 접근제한
가상호스트 파일에 접근제한 명령을 추가해주자
그럼 W11 (201) 외에는 모두 접속이 불가능 해진다.
만약 저 Testing이라 써있는 웰컴페이지가 싫다면
etc/httpd/conf.d/ 아래에 있는 welcome 파일의 확장자명을 바꿔주자!
에러 페이지까지 정상 출력 시켰다.
사용자별 접근제한
이번에도 가상 호스팅 파일에 추가해주자
사용자 인증을 적용했으면
해당 디렉토리 지시자 경로에 .htaccess 파일을 작성해주자!
작성을 완료 했으면
위 사진에서 설정한 경로에 사용자 계정,패스워드를 만들어주자
http의 인증엔
htpasswd 라는 명령어로 계정을 생성한다
조심해야할 것이 하나 있다.
-c 옵션은 최소 생성시에만 적용 해야한다.
-c 옵션을 또 쓰면 이전에 있던 정보가 지워지고 쓰여진다!
이제 intra 페이지 접속시 사용자 계정을 인증해야 한다!
이상으로 http 서비스에 대해서 알아봤다
'Linux > CentOS7' 카테고리의 다른 글
Linux 20 . NFS 서비스 (0) | 2024.02.19 |
---|---|
Linux 19 . Mail 서비스 (0) | 2024.02.19 |
Linux 17 . DNS 서비스 (0) | 2024.02.15 |
Linux 16 . ftp 서비스 (0) | 2024.02.14 |
Linux 15 . dhcp 서비스 (1) | 2024.02.13 |