반응형
Jen'_'
Jen's Space
Email
GitHub
전체 방문자
오늘
어제
  • 분류 전체보기 (98)
    • Ansible (4)
      • 우아한앤서블 (4)
    • Cloud (19)
      • AWS (17)
      • GCP (2)
    • DevOps (40)
      • Docker (6)
      • Kubernetes (26)
      • CICD (6)
      • Terraform (2)
    • Language (13)
      • Python (12)
      • Node.js (1)
    • Linux (10)
    • etc. (7)
    • 개인기록 (1)
    • AEWS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 피드백 환영합니다 :)

인기 글

태그

  • ansible
  • 자격증
  • INGRESS
  • k8s
  • terraform
  • ALB
  • gitops
  • jenkins
  • Docker
  • autoscaling
  • 우아하게앤서블
  • karpenter
  • argocd
  • CICD
  • EKS
  • ubuntu
  • 쿠버네티스
  • Kubernetes
  • vagrant
  • AWS

최근 댓글

Jen'_'

Jen's Space

[CentOS8] nginx 웹서버(2) - 사용자 디렉터리로 호스팅, 가상호스트, Basic Authentication
Linux

[CentOS8] nginx 웹서버(2) - 사용자 디렉터리로 호스팅, 가상호스트, Basic Authentication

2021. 5. 5. 17:12
반응형

 

이번 실습은 웹서버가 구축되어 있는 상태에서 진행되므로, 구축이 안되어 있으면 아래 포스팅부터 보세요

jenakim47.tistory.com/31

 

[CentOS8] nginx 웹서버(1) - 구축, php설정

1. nginx 설치 epel-release 인스톨 및 yum 저장소를 업데이트 해줍니다. [root@master ~]# yum install -y epel-release [root@master ~]# rpm -ivh http://rpms.remirepo.net/enterprise/remi-release8-.rpm..

jenakim47.tistory.com

 

목표

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
    'Linux' 카테고리의 다른 글
    • [Ubuntu] Could not get lock /var/lib/dpkg/lock-frontend 에러 해결
    • [CentOS8] nginx 웹서버(1) - 구축, php설정
    • [CentOS8] 보조 DNS 서버 구축
    • [CentOS8] SAMBA 사용법
    Jen'_'
    Jen'_'
    DevOps 엔지니어 Jen의 기술 블로그 / 이메일: jenakim47@gmail.com

    티스토리툴바