Nginx 의 세 가지 응용 장면 소개

6783 단어
가상 호스트 설정
한 서버 에서 여러 사 이 트 를 시작 하 는 것 이다.
어떻게 서로 다른 사 이 트 를 구분 합 니까?
1. 도 메 인 이름 이 다르다
2. 포트 가 다르다
1.1. 포트 를 통 해 서로 다른 가상 컴퓨터 를 구분한다.
Nginx 프로필:
/usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections  1024;

}
http {
include       mime.types;

default_type  application/octet-stream;



#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

#                  '$status $body_bytes_sent "$http_referer" '

#                  '"$http_user_agent" "$http_x_forwarded_for"';



#access_log  logs/access.log  main;



sendfile        on;

#tcp_nopush     on;



#keepalive_timeout  0;

keepalive_timeout  65;



#gzip  on;

server {
    listen       80;

    server_name  localhost;



    #charset koi8-r;



    #access_log  logs/host.access.log  main;

location / {
        root   html;

        index  index.html index.htm;

    }

}

}
여러 개의 server 를 설정 할 수 있 고 여러 개의 가상 호스트 를 설정 할 수 있 습 니 다.
가상 호스트 추가:
#user nobody; worker_processes 1; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections  1024;

}
http {
include       mime.types;

default_type  application/octet-stream;



#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

#                  '$status $body_bytes_sent "$http_referer" '

#                  '"$http_user_agent""$http_x_forwarded_for"';

#access_log  logs/access.log  main;

sendfile        on;
#tcp_nopush     on;
#keepalive_timeout  0;
keepalive_timeout  65;
#gzip  on;

server {
    listen       80;
    server_name  localhost;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    location / {
        root   html;
        index  index.html index.htm;
    }
}

server {
    listen       81;
    server_name  localhost;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    location / {
        root   html-81;
        index  index.html index.htm;
    }
}

프로필 다시 불 러 오기
[root@localhost nginx]# sbin/nginx -s reload
1.2. 도 메 인 이름 으로 가상 호스트 구분
1, 2, 1. 도 메 인 이름 이 뭐 예요?
도 메 인 이름 은 사이트 다.
www.baidu.com
www.taobao.com
www.jd.com
Tcp/ip
Dns 서버: 도 메 인 이름 을 ip 주소 로 해석 합 니 다. 도 메 인 이름과 ip 의 맵 관 계 를 저장 합 니 다.
1 급 도 메 인 이름:
Baidu.com
Taobao.com
Jd.com
2 단계 도 메 인 이름:
www.baidu.com
Image.baidu.com
Item.baidu.com
3 단계 도 메 인 이름:
1.Image.baidu.com
Aaa.image.baidu.com
하나의 도 메 인 이름 은 하나의 ip 주소 에 대응 하고 하나의 ip 주 소 는 여러 도 메 인 이름 으로 연결 할 수 있 습 니 다.
로 컬 테스트 는 hosts 파일 을 수정 할 수 있 습 니 다.
window 의 hosts 파일 수정: (C: \ Windows \ System 32 \ \ drivers \ \ etc)
도 메 인 이름과 ip 의 맵 관 계 를 설정 할 수 있 습 니 다. hosts 파일 에 도 메 인 이름과 ip 의 대응 관 계 를 설정 하면 dns 서버 를 가지 않 아 도 됩 니 다.
1.2.2. Nginx 설정
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections  1024;

}
http {
include       mime.types;

default_type  application/octet-stream;

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';
#access_log  logs/access.log  main;
sendfile        on;
#tcp_nopush     on;
#keepalive_timeout  0;
keepalive_timeout  65;
#gzip  on;
server {
    listen       80;
    server_name  localhost;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    location / {
        root   html;
        index  index.html index.htm;
    }
}
server {
    listen       81;
    server_name  localhost;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    location / {
        root   html-81;
        index  index.html index.htm;
    }
}
server {
    listen       80;
    server_name  www.taobao.com;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    location / {
        root   html-taobao;
        index  index.html index.htm;
    }
}
server {
    listen       80;
    server_name  www.baidu.com;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    location / {
        root   html-baidu;
        index  index.html index.htm;
    }
}

도 메 인 이름 설정:
192.168.25.148 www.taobao.com
192.168.25.148 www.baidu.com
역방향 대리
프 록 시 서버 를 반대로 해서 어느 서버 가 서 비 스 를 제공 할 지 결정 합 니 다.
프 록 시 서버 로 돌아 가 서버 를 제공 하지 않 습 니 다. 요청 한 퍼 가기 이기 도 합 니 다.
2.2. Nginx 역방향 에이전트 실현
두 도 메 인 이름 은 같은 nginx 서버 를 가리 키 며 사용자 가 서로 다른 도 메 인 이름 을 방문 하여 서로 다른 웹 페이지 내용 을 표시 합 니 다.
두 도 메 인 이름 은 www. sian. com. cn 과 www. sohu. com 입 니 다.
nginx 서버 사용 가상 컴퓨터 192.168.101.3
첫 번 째 단계: 두 개의 tomcat 를 설치 하여 각각 8080 과 8081 포트 에서 실 행 됩 니 다.
두 번 째 단계: tomcat 두 개 를 시작 합 니 다.
세 번 째 단계: 역방향 프 록 시 설정
upstream tomcat1 {
server 192.168.25.148:8080;
}

server {

    listen       80;

    server_name  www.sina.com.cn;



    #charset koi8-r;



    #access_log  logs/host.access.log  main;



    location / {

        proxy_pass   http://tomcat1;

        index  index.html index.htm;

    }

}

upstream tomcat2 {

server 192.168.25.148:8081;
}

server {

    listen       80;

    server_name  www.sohu.com;



    #charset koi8-r;



    #access_log  logs/host.access.log  main;



    location / {

        proxy_pass   http://tomcat2;

        index  index.html index.htm;

    }

}

네 번 째 단계: nginx 설정 파일 다시 불 러 오기
다섯 번 째 단계: 도 메 인 이름 설정
hosts 파일 에 도 메 인 이름과 ip 의 맵 관 계 를 추가 합 니 다.
192.168.25.148 www.sina.com.cn
192.168.25.148 www.sohu.com
tomcat 날짜 보기: tail - f tomcat / logs / catalina. out
부하 균형
만약 하나의 서비스 가 여러 서버 에서 제공 된다 면, 부 하 를 서로 다른 서버 로 분배 하여 처리 해 야 하 며, 부하의 균형 이 필요 하 다.
upstream tomcat2 {
server 192.168.25.148:8081;
server 192.168.25.148:8082;
}
서버 의 실제 상황 에 따라 서버 의 가중치 를 조정 할 수 있 습 니 다. 가중치 가 높 을 수록 할당 요청 이 많 고 가중치 가 낮 을 수록 요청 이 적 습 니 다. 기본 값 은 모두 1 입 니 다.
upstream tomcat2 {
server 192.168.25.148:8081;
server 192.168.25.148:8082 weight=2; }

좋은 웹페이지 즐겨찾기