nginx 를 사용 하여 부하 균형 과 HTTP 서버 를 만 듭 니 다.

3582 단어
다음으로 이동: https://codeday.me/collect/20180918/256151.html
부하 균형
부하 균형 이란 요청 을 여러 작업 단원 에 나 누 어 실행 하 는 것 을 의미한다. 쉽게 말 하면 규칙 (랜 덤 규칙, 가중치 규칙, session 규칙 등) 에 따라 요청 을 지정 한 서버 에 나 누 어 처리 하 는 것 이다. 일반적으로 역방향 프 록 시 를 동시에 설정 하고 역방향 프 록 시 를 통 해 부하 균형 으로 전환 해 야 한다.한편, Nginx 는 현재 3 가지 부하 균형 전략 을 지원 하고 2 가지 자주 사용 하 는 제3자 전략 도 있다.
1. RR (Nginx 기본 값 은 RR 정책) 모든 요청 은 시간 순서에 따라 서로 다른 백 엔 드 서버 에 할당 되 고 백 엔 드 서버 다운 이 떨 어 지면 자동 으로 삭 제 됩 니 다.
단순 설정
upstream webtest {
 server 192.168.0.2:8080;
 server 192.168.0.3:8081;
 }
 server {
 listen 80; 
 server_name localhost; 
 client_max_body_size 1024M;

location / {
 proxy_pass http://webtest;
 proxy_set_header Host $host:$server_port;
 }
 }

8081 서버 가 끊 기 면 접근 합 니 다.http://localhost 때 에 도 문제 가 없 을 것 이 고, 기본 값 으로 넘 어 갈 것 이다http://localhost:8080.
2. 가중치
폴 링 확률 을 지정 하고 weight 와 방문 비율 이 정비례 하여 백 엔 드 서버 의 성능 이 고 르 지 않 은 경우 에 사용 합 니 다.예컨대
upstream test {
 server 192.168.0.2:8080 weight=9;
 server 192.168.0.3:8081 weight=1;
 }

그러면 10 번 은 보통 1 번 만 8081 번 을 방문 하고 9 번 은 8080 번 을 방문 합 니 다.
3、ip_hash
위의 두 가지 방식 에 문제 가 있 습 니 다. 바로 다음 요청 이 왔 을 때 다른 서버 에 요청 을 보 낼 수 있 습 니 다. 프로그램 이 무 상태 가 아 닐 때 (session 으로 데 이 터 를 저장 합 니 다) 로그 인 정 보 를 session 에 저장 하면 다른 서버 로 이동 할 때 다시 로그 인 해 야 합 니 다.그래서 우 리 는 한 명의 고객 이 한 서버 만 방문 해 야 할 때 가 많 습 니 다. 그러면 ip 를 사용 해 야 합 니 다.hash 됐어, iphash 의 모든 요청 은 ip 에 접근 하 는 hash 결과 에 따라 분 배 됩 니 다. 모든 방문객 이 백 엔 드 서버 에 고정 적 으로 접근 하면 session 문 제 를 해결 할 수 있 습 니 다.
upstream test {
 ip_hash;
 server 192.168.0.2:8080;
 server 192.168.0.3:8081;
 }

4. fair (제3자 모듈 을 설치 해 야 함) 는 백 엔 드 서버 의 응답 시간 에 따라 요청 을 분배 하고 응답 시간 이 짧 은 우선 분 배 를 해 야 합 니 다.
upstream backend { 
 fair; 
 server 192.168.0.2:8080;
 server 192.168.0.3:8081;
 }

5、url_hash (제3자 모듈 을 설치 해 야 합 니 다) url 에 접근 한 hash 결과 에 따라 요청 을 할당 합 니 다. 모든 url 을 같은 백 엔 드 서버 로 지정 하고 백 엔 드 서버 가 캐 시 일 때 유효 합 니 다.upstream 에 hash 문 구 를 추가 하고 server 문 구 는 weight 등 다른 매개 변 수 를 기록 할 수 없습니다. hashmethod 는 hash 알고리즘 을 사용 합 니 다.
upstream backend { 
 hash $request_uri; 
 hash_method crc32; 
 server 192.168.0.2:8080;
 server 192.168.0.3:8081;
 } 
 
       :https://blog.csdn.net/qinyushuang/article/details/43953341

HTTP 서버 Nginx 자체 도 정적 자원 의 서버 입 니 다. 정적 자원 만 있 을 때 Nginx 를 사용 하여 서버 를 만 들 수 있 습 니 다. 또한 현재 도 동정 분리 가 유행 하고 있 습 니 다. Nginx 를 통 해 이 루어 질 수 있 습 니 다.
server {
 listen 80; 
 server_name localhost; 
 client_max_body_size 1024M;
 location / {
 root /var/www/test;
 index index.html;
 }
 }

하면, 만약, 만약...http://localhost 기본적으로 / var / www / root 디 렉 터 리 아래 의 index. html 에 접근 합 니 다. 만약 에 한 사이트 가 정적 페이지 일 뿐 이 라면 이런 방식 으로 배 치 를 실현 할 수 있 습 니 다.
동정 분리
동정 분 리 는 동적 사이트 안의 동적 웹 페이지 가 일정한 규칙 에 따라 변 하지 않 는 자원 과 자주 변 하 는 자원 을 구분 하도록 하 는 것 이다. 동정 자원 이 분 리 된 후에 우 리 는 정적 자원 의 특징 에 따라 캐 시 작업 을 할 수 있다. 이것 이 바로 사이트 정태 화 처리 의 핵심 방향 이다.
upstream servertest{ 
 server 192.168.0.2:8080; 
 server 192.168.0.3:8081; 
 }

server { 
 listen 80; 
 server_name localhost;

location / { 
 root /var/www/test;
 index index.html; 
 }

#         nginx  ,     html 
 location ~ \.(gif|jpg|jpeg|png|bmp|swf|css|js)$ { 
 root /var/www/test;
 }

#           tomcat   
 location ~ \.(jsp|do)$ { 
 proxy_pass http://servertest; 
 }

error_page 500 502 503 504 /50x.html; 
 location = /50x.html { 
 root /var/www/test;
 } 
 }

이렇게 HTML \ 그림 과 css, js 는 var / www / test 디 렉 터 리 에 두 고 tomcat 는 jsp 와 요청 만 처리 합 니 다.
 
nginx 설치 참고:https://codeday.me/collect/20170831/65586.html

좋은 웹페이지 즐겨찾기