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