이번 실습은 웹서버가 구축되어 있는 상태에서 진행되므로, 구축이 안되어 있으면 아래 포스팅부터 보세요
목표
1. 사용자 홈디텍터리별 호스팅
2. 하나의 웹서버로 두개의 웹페이지를 이용하기 위한 가상호스트 설정
3. 사용자 인증 Basic Authentication
1. 사용자 홈디렉터리별 호스팅
- 호스트별로 웹페이지를 만들어서 접근하기
- centos master 에 웹서버가 구축되어 있고, user1 사용자가 있다.
- user1 디렉터리 html 파일에 접근할 것이다.
[root@master ~]# vi /etc/nginx/nginx.conf
설정파일 server {} 안에 아래 항목을 넣는다
location ~ ^/~(.+?)(/.*)?$ { # http://serverip/~username
alias /home/$1/public_html$2; # /home/username/public_html/ 하위에 html 파일을 넣을것이다.
index index.html index.htm;
}
아래처럼 넣으면됨(친절하다 ㅎㅎ)
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.chul.com; # 사용ip or 도메인
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
location ~ ^/~(.+?)(/.*)?$ {
alias /home/$1/public_html$2;
index index.html index.htm;
}
[root@master ~]# setsebool -P httpd_enable_homedirs on
[root@master ~]# chmod 711 /home/user1
홈디렉터리에 접근하기 위해선 bool값 설정과 권한 설정이 필요하다.
[root@master ~]# su - user1
소유주 그룹주가 user1 이어야 하므로 계정을 바꿔준다
[user1@master ~]$ pwd
/home/user1
[user1@master ~]$ mkdir public_html
[user1@master ~]$ chmod 755 public_html/
[user1@master ~]$ vi public_html/index.html
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
Nginx UserDir Test Page
</div>
</body>
</html>
대충 이런 html 파일을 만들어 주었다.
192.168.111.10/~user1 을 입력하면 /home/user1/public_html/index.html 에 접근한다!
서버를 사용하는 사용자마다 사용할 수 있는 웹페이지를 만들어 놓으면 아주 좋을거 같다 ㅎㅎ
* 본인 serverip가 192.168.111.10 이고 user1 사용자가 있는거임.
2. 가상호스트
- 하나의 웹서버(192.168.111.10)에 두개의 웹페이지 사용.
- DNS서버가 있어야함. www.jeong.com 를 DNS에서 192.168.111.10 으로 변경. (vi /var/named/jeong.zon)
- window의 dns 주소를 192.168.111.10 으로 한다음 테스트. 즉, 두개의 가상 리눅스 서버와 한개의 윈도우 클라이언트가 필요.
- www.chul.com을 입력하면 /usr/share/nginx/html/index.html 에 접근
- www.jeong.com을 입력하면 /vhost/jeong/www/index.html 에 접근
* www.chul.com은 centos master 에서 사용하는 도메인이다.
* www.jeong.com은 centos slave 에서 사용하는 도메인이다.
[root@master ~]# vi /etc/nginx/conf.d/vhost.conf
가상호스트를 위한 새로운 웹서버 설정파일을 만든다.
아래의 내용을 넣는다.
server {
listen 80;
server_name www.jeong.com; # 가상호스트 사용 도메인
location / {
root /vhost/jeong/www; # 하위 경로에 html 파일을 넣을 것이다.
index index.html index.htm;
}
}
[root@master ~]# systemctl restart nginx
[root@master ~]# chcon -R -t httpd_sys_content_t /vhost/
디렉터리에 selinux 설정 해줘야함.
[root@master ~]# vi /var/named/jeong.zon
가상호스트 존파일에 www행의 ip를 웹서버(master) ip로 바꾼다.
www IN A 192.168.111.10
[root@master ~]# systemctl restart named
window client로 넘어가서 dns를 웹서버ip(192.168.111.10)으로 바꾸고,
www.chul.com과 www.jeong.com에 ip를 확인, 아래와 같이 둘다 같은 ip가 나오면 준비가 끝났다.
window client에서 www.chul.com 검색
/usr/share/nginx/html/index.html 에 접근 성공!
www.jeong.com 검색
/vhost/jeong/www/index.html 에 접근성공!
3. Basic Authentication
- 웹서버에 접근하려면 사용자 인증을 해야하는 설정을 해 볼 것이다.
[root@master ~]# yum -y install httpd-tools
[root@master ~]# vi /etc/nginx/nginx.conf
server {} 안에 아래 항목을 넣는다.
location /auth-basic/ { # http://serverip/auth-basic 이런 경로로 들어갈것임
auth_basic "Basic Auth"; # 로그인 팝업창 메시지
auth_basic_user_file "/etc/nginx/.htpasswd"; # 로그인시 필요한 사용자 계정과 비밀번호 정보 파일
}
[root@master ~]# mkdir /usr/share/nginx/html/auth-basic
[root@master ~]# vi /usr/share/nginx/html/auth-basic/index.html
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
Basic Auth Test Page
</div>
</body>
</html>
디렉터리를 만들어주고 대충 이런 html 파일을 넣어준다.
[root@master ~]# htpasswd -c /etc/nginx/.htpasswd user1
New password:
Re-type new password:
Adding password for user user1
apache에서 제공하는 "htpasswd"로 아이디/패스워드 파일을 관리 할 수 있다.
아이디/패스워드를 저장 할 파일 이름을 /etc/nginx/.htpasswd로 설정하였다.
htpasswd -c 옵션을 사용하면 파일을 만들고, 계정을 생성하는 것이다.
파일을 생성한 다음부터는 -c 옵션을 빼고 htpasswd 명령어를 사용하여 사용자를 추가할 수 있다.
[root@master ~]# cat /etc/nginx/.htpasswd
user1:$apr1$JBwuz9zL$jzQG/a5C1jA.HsDX3E0GA/
파일을 확인해 보면 user1 사용자와 패스워드가 확인된다.
[root@master ~]# systemctl restart nginx
설정파일을 추가했으니 재시작
http://www.chul.com(or ip)/auth-basic 을 검색하니 인증 창이 뜬다!
'Linux' 카테고리의 다른 글
[Ubuntu] Could not get lock /var/lib/dpkg/lock-frontend 에러 해결 (0) | 2021.10.25 |
---|---|
[CentOS8] nginx 웹서버(1) - 구축, php설정 (0) | 2021.05.05 |
[CentOS8] 보조 DNS 서버 구축 (0) | 2021.02.09 |
[CentOS8] SAMBA 사용법 (0) | 2021.02.08 |
[CentOS8] ssh 원격접속 명령어 사용법 (비밀번호사용, 전자서명) (0) | 2021.02.02 |