Nginx 학습 노트 - 가상 호스트

가상 호스트
웹 서비스 발 표 는 IP, PORT, 도 메 인 이름 등 세 가지 선 각 조건 을 만족 시 켜 야 한다.
웹 서버 는 기본적으로 웹 하나만 발표 할 수 있 습 니 다.
자원 비용 을 절약 하기 위해 여러 개의 웹 을 발표 하려 면 가상 호스트 가 필요 합 니 다. 따라서 가상 호스트 는 한 대의 서버 를 여러 개의 '가상' 서버 로 나 누 는 것 입 니 다. 모든 가상 호스트 는 독립 된 도 메 인 이름과 독립 된 디 렉 터 리 로 나 눌 수 있 습 니 다.
nginx 에서 server 는 웹 입 니 다.
IP 기반 가상 호스트
IP 를 바탕 으로 한 호스트 에 여러 개의 웹 을 발표 하 는 데 만족 해 야 하 는 조건 은 바로 이 호스트 가 두 개 와 두 개 이상 의 IP 를 가지 고 있다 는 것 이다.
테스트 할 때 다 중 네트워크 카드 가 만족 하지 않 기 때문에 가상 네트워크 카드 를 만 듭 니 다. 설정 은 다음 과 같 습 니 다.
[root@localhost ~]# ifconfig eth0:1 10.16.0.100/24 up
    server {
        listen       10.16.0.9:81;
        #server_name  localhost;
        charset utf-8;
        #access_log  logs/host.access.log  main;
        location / {
            root   html/a;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen       10.16.0.100:81;
        #server_name  localhost;
        charset utf-8;
        #access_log  logs/host.access.log  main;
        location / {
            root   html/b;
            index  index.html index.htm;
            }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
            }
    }

포트 기반
말 그대로 포트 기반 포트 중복 불가
    server {
        listen       81;
        #server_name  localhost;
        charset utf-8;
        location / {
            root   html/a;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    } 
    server {
        listen       82;
        #server_name  localhost;
        charset utf-8;
        location / {
            root   html/b;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

도 메 인 이름 기반
도 메 인 이름 은 DNS 분석 과 관련 되 어 있 습 니 다. 도 메 인 이름 은 분석 할 수 있어 야 접근 할 수 있 기 때문에 도 메 인 이름 을 / etc / hosts 에 추가 해 야 합 니 다.
[root@localhost conf]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1       localhost localhost.localdomain localhost6 localhost6.localdomain6
10.16.0.9   www.a.com
10.16.0.9   www.b.com

nginx 설정 은 다음 과 같 습 니 다:
    server {
        listen       81;
        server_name  www.a.com;
        charset utf-8;
        location / {
            root   html/a;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen       81;
        server_name  www.b.com;
        charset utf-8;
        location / {
            root   html/b;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

접근 테스트:
[root@localhost conf]# curl http://www.a.com:81
this is web a
[root@localhost conf]# curl http://www.b.com:81
this is web b

세 가지 방식 의 단점:
IP 기반: 여러 개의 IP 가 필요 합 니 다. 만약 에 공공 네트워크 IP 라면 모든 IP 는 비용 을 지불해 야 합 니 다.
포트 기반: 포트 는 네트워크 사용자 에 게 알 릴 수 없고 네트워크 사용자 에 게 사용 할 수 없 으 며 내부 네트워크 에 적 용 됩 니 다.
도 메 인 이름 기반: 이런 방식 으로 앞의 두 가지 방식 의 단점 을 해결 했다.

좋은 웹페이지 즐겨찾기