이번에는 가상호스트을 통해 다양한 웹페이지을 서비스하는 가상호스트와 , 특정 페이지에 접속을 막는법과, 사용자 인증을 통해 접속하는 법에 대해 알아보도록 하겠습니다.
1. VirtualHost (가상호스트)
- 웹사이트가 여러개인 경우 서비스 가능한 방법
- ip도 동일하고, port도 동일한 경우 DNS에서 host 이름을 설정해줘야 한다.
아래 설정을 하기 전에는 나의 환경은 dhcp가 설정되어 있고,
기본적인 dns 설정을 해준 상태이다.
가상호스트 설정
순서 |
1. DNS 레코드테이블 수정 |
2. 파일권한설정 |
3. httpd.conf 가상호스트 설정 |
4. 방화벽 제어 |
5. 홈페이지별 디렉토리 및 index.html 설정 |
6. systemctl |
1. DNS 레코드테이블 파일 수정
일단 , dns 레코드 테이블 파일인 /var/named/test.local 파일에서
각각 blog 과 intra 라는 dns을 설정해준다.
vi /var/named/test.local
## 편집모드
$TTL 1D
@ IN SOA ns1.test.local. web. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.test.local.
MX 10 mx.test.local.
@ A 10.0.0.11
www A 10.0.0.11
ftp A 10.0.0.11
ns1 A 10.0.0.11
mx A 10.0.0.11
blog A 10.0.0.11 # blog dns
intra A 10.0.0.11 # intra dns
2. 파일 권한설정
-test.local에 대한 other 사용자도 읽을 수 있도록 권한설정을 한다.
chmod -o+r /var/named/test.local
3. 가상호스트 설정
- http config 파일에서 가상호스트를 설정해야한다.
vi /etc/httpd/conf/httpd.conf # 가상호스트 설정을 위한 httpd 설정파일 진입
NameVirtualHost *:80
## blog 가상호스트 설정
<VirtualHost *:80>
DocumentRoot /var/www/blog
ServerName blog.test.local
</VirtualHost>
# intra 가상호스트 설정
<VirtualHost *:80>
DocumentRoot /var/www/intra
ServerName intra.test.local
</VirtualHost>
# 메인 페이지 가상호스트 설정
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName test.local
ServerAlias www.test.local
</VirtualHost>
이렇게 서비스 하는 메인페이지 , 블로그페이지, 인트라 페이지에 대한 가상호스트를 설정해줘야한다.
사실 메인페이지는 가상호스트를 설정안해도되지만, 그럼 서비스 진행할때 종종 오류가 발생할 수 있어 그냥 메인 페이지까지 가상호스트 설정을 한다,
4. blog , intra 디렉토리 생성 및 페이지 html 설정
mkdir /var/www/{blog,intra}
그래서 각각 블로그 ,인트라 페이지의 html을 구성한다.
5. 방화벽제어
- httpd는 80번 포트 dns는 53번 포트를 사용하기 때문에 다 열어줘야한다.
firewall-cmd --permanent --add-port= 53/tcp
firewall-cmd --permanent --add-port= 53/udp # 데이터양이 512byte가 넘어가면 udp 방식을 사용하기 때문에 미리 열어둔다.
firewall-cmd --permanent --add-port= 80/tcp
6. systemctl
- 이제 httpd와 named(dns) 서비스를 실행시킨다.
systemctl start httpd
systemctl start named
Windwo 가상환경을 통해 확인해보자
(1) 메인페이지
(2) blog 페이지
(3) intra 페이지
사용자 인증
순서 |
1. httpd.conf 사용자 인증 설정 |
2. htaccess 파일 작성 |
3. htaccess 사용자 추가 |
이번에는 특정 페이지에 접속할려면 id와 비밀번호를 통해 접속하는 방법이다.
1. httpd.conf 사용자 인증 설정
인트라 페이지에 사용자 인증을 적용하고자한다.
vi /etc/httpd/conf/httpd.conf
######## 편집모드
<Directory "/var/www/intra"> # 해당 디렉토리 설정
AllowOverride Authconfig # 사용자 인증설정
#Options Indexes FollowSymLinks # 홈페이지에서 하위 디렉토리를 보여주는것
## 보안상 안하는것이 좋음
</Directory>
2. htaccess 파일 작성
.htaccess 파일은 Apache 기반 웹 서버에서 특별히 사용하여 웹 사이트에 직접 연결된 파일 / 폴더와 관련된 특정 기능을 관리하는 데 도움이되는 구성 파일입니다. 여기서 사용자 제어 기능을 구성하면됩니다.
vi /var/www/intra/.htaccess ##
###################편집,구성모드
AuthName "app" # 이름
AuthType Basic #인증타입
AuthUserFile /date/.auth # 인증 유저에 관한 정보파일 위치
Require user aaa bbb # 인증유저
이후 /date 라는 디렉토리를 생성해야만 위에 인증유저정보파일이 제대로 기록된다.
3. htaccess 사용자 추가
htpasswd -c /date/.auth aaa
비밀번호 입력
htpasswd /date/.auth bbb
비밀번호 입력
처음생성해야 할 때는 -c 옵션을 줘야 하지만, 두번째 생성부터는 -c 옵션을 주면 안된다.
이후 /date/.auth 파일에 가보면
자동으로 이렇게 유저가 생성되어 있다.
특정 IP 접근거부
특정 IP를 거부도 가능하다.
이번에는 그럼 10.0.0.101 ip을 가진 컴퓨터의 경우 블로그 페이지의 접근을 제한해보도록 하겠다.
1. httpd.conf
<Directory "/var/www/blog"> # 설정할 디렉토리
Order allow,deny # 옵션
Allow from all
Deny from 10.0.0.101 # 거부할 IP
</Directory>
이렇게 10.0.0.101.은 blog 페이지에 접속이 안되게 된다.
DNS 가상호스트 개념과 설정방법들의 설정파일 경로도 각기 다르고,
내용도 어려워서 이해하고 구현하는데까지 시간이 조금 걸렸다.
'Linux' 카테고리의 다른 글
Linux _ssh 설정 (0) | 2023.08.30 |
---|---|
Linux_ wordpress , mysql(8.0) , php(8.0) 연동 (0) | 2023.08.26 |
Linux 명령어 - (6) server 관리 - DNS (0) | 2023.08.20 |
Linux 명령어 - (6) server 관리 - FTP (0) | 2023.08.18 |
Linux 명령어 - (6) server 관리 - DHCP (0) | 2023.08.16 |