Nginx 의 역할, 프로필 상세 설명 - 학습 노트
현재 많은 회사 들 이
Nginx
를 사용 하고 있 습 니 다. 그렇다면 도대체 무엇이 Nginx
인지 생각해 본 적 이 있 습 니까?Nginx
도대체 무슨 작용 이 있 습 니까?왜 우 리 는 그것 을 써 야 합 니까?2. Nginx 가 무엇 입 니까?
Nginx
는 고성능, 경량급 Web
서버 / 역방향 프 록 시 및 이메일 IMAP/POP3
프 록 시 서버 입 니 다.메모리 가 적 고 병발 능력 이 강 한 것 이 특징 이다.3. Nginx 의 역할
1. 역방향 에이전트
역방향 프 록 시 는 프 록 시 서버 의 일종 이다.서버 는 클 라 이언 트 의 요청 에 따라 연 결 된 한 그룹 이나 여러 그룹의 백 엔 드 서버 (예 를 들 어 웹 서버) 에서 자원 을 가 져 온 다음 에 이 자원 을 클 라 이언 트 에 게 되 돌려 줍 니 다. 클 라 이언 트 는 프 록 시 뒤에 있 는 서버 클 라 이언 트 의 존 재 를 모 르 고 프 록 시 IP 주 소 를 되 돌려 줍 니 다.
2. 동적 과 정적 분리
Nginx
요청 을 분리 할 수 있 기 때문에 이 를 이용 하여 동적 요청 과 정적 요청 을 분리 할 수 있 습 니 다.이렇게 하면 정적 자원 을 Nginx
서버 에 배치 하고 백 엔 드 코드 를 tomcat 등 용기 에 배치 하면 동적 과 정적 분 리 를 실현 할 수 있다.3. 부하 균형
Nginx
역방향 프 록 시 능력 이 있 기 때문에 Nginx
데이터 트 래 픽 을 일정한 규칙 에 따라 여러 서버 에 분담 하여 집행 하여 각 서버 의 압력 을 줄 이 고 여러 대의 서버 (클 러 스 터 형식) 가 공동으로 작업 임 무 를 완성 하여 데이터 의 스루풋 을 높 일 수 있다.Nginx 의 부하 균형 정책:
매개 변수
설명 하 다.
어떠한 인자 도 쓰 지 않 음
기본 폴 링
weight
중시 하 다
ip_hash
ip 에 따라 분배 하 다
least_conn
최소 연결
url_hash (제3자)
URL 에 따라 할당
air (제3자)
응답 시간
부하 균형 노드 는 다음 과 같은 선택 가능 한 매개 변수 가 있 습 니 다.
매개 변수
설명 하 다.
fail_timeout
max_fails
와 결합 하여 사용 10s
max_fails fail_timeout
매개 변수 설정 시간 내 에 실패 횟수 max_fails
에 도달 하면 Nginx
서버 가 사용 할 수 없다 고 생각 합 니 다 1
backup 이 서버 를 예비 서버 로 표시 합 니 다.홈 서버 가 멈 추 면 요청 이 여기에 전 송 됩 니 다.
down
태그 서버 가 영구적 으로 정지 되 었 습 니 다.
Nginx
연결 탐지 기반 max_fails
설정 Nginx
서버 노드 와 통신 하려 는 시도 실패 횟수.fail_timeout
매개 변수 가 정 의 된 시간 동안 실패 한 횟수 가 max_fails
설정 한 값 에 달 했 습 니 다. Nginx
이 서버 노드 를 사용 할 수 없다 고 생각 하고 정책 에 따라 다른 사용 가능 한 서버 노드 로 요청 합 니 다.다음 fail_timeout
시간 주기 에 이 서버 노드 는 더 이상 시도 되 지 않 고 다음 fail_timeout
시간 주기 에 야 시도 된다.여기 주의 하 세 요 fail_timeout
는 이중 적 인 의미 가 있 습 니 다.max_fails
실패 한 시도 횟수 는 기본적으로 1 입 니 다.0 으로 설정 하면 시도 횟수 를 집계 하지 않 고 서버 가 계속 사용 할 수 있다 고 생각 합 니 다.명령 proxy_next_upstream
, fastcgi_next_upstream
, memcached_next_upstream
을 통 해 실패 한 시 도 를 설정 할 수 있 습 니 다.기본 설정 시 http_404
상 태 는 실패 한 시도 로 간주 되 지 않 습 니 다.3.1). 문의
이것 은 upstream
모듈 의 기본 부하 균형 정책 입 니 다.모든 요청 은 시간 순서에 따라 백 엔 드 서버 에 하나씩 배 치 됩 니 다.예:
upstream lixiang.test {
# ( )
server 192.168.0.1:8080 max_fails=3 fail_timeout=30s;
server 192.168.0.2:8080 max_fails=3 fail_timeout=30s;
server 192.168.0.3:8080 backup;
}
주의:
3.2). 가중치
weight
폴 링 전략 을 바탕 으로 weight
매개 변 수 를 통 해 폴 링 의 비중 을 지정 합 니 다.그 중에서 weight
의 기본 값 은 1 이 고 weight
값 이 클 수록 분배 되 는 비중 이 클 수록 분배 되 는 확률 이 높다.예:
upstream lixiang.test {
#
server 192.168.0.1:8080 weight=2;
server 192.168.0.2:8080 weight=3;
server 192.168.0.3:8080 max_fails=3 fail_timeout=30s;
}
주의:
least_conn
과 ip_hash
를 결합 하여 사용 할 수 있다.3.3). ip 에 따라 분배
ip_hash
Nginx
클 라 이언 트 ip 의 hash 결과 에 따라 분 배 됩 니 다.같은 ip 은 일정 시간 동안 고정된 서버 노드 에 배 치 됩 니 다. 그러면 공유 문 제 를 해결 할 수 있 습 니 다 session
.예:
upstream lixiang.test {
ip_hash; # + ip_hash, ip
server 192.168.0.1:8080 weight=2;
server 192.168.0.2:8080;
server 192.168.0.3:8080 max_fails=3 fail_timeout=30s;
}
주의:
ip_hash
에서 가중치 weight
를 사용 할 수 없습니다.ip_hash
는 backup
와 동시에 사용 할 수 없다.session
.down
으로 제거 해 야 합 니 다.3.4). 최소 연결
least_conn
Nginx
연결 수가 적은 백 엔 드 서버 에 요청 을 전달 합 니 다.폴 링 알고리즘 은 요청 을 각 백 엔 드 에 평균 적 으로 전달 하여 부하 가 대체적으로 같 도록 하 는 것 이다.그러나 일부 요청 이 오래 걸 리 면 서버 노드 부하 가 높 을 수 있 습 니 다.이런 상황 에서
least_conn
이런 방식 은 더욱 좋 은 부하 균형 효 과 를 거 둘 수 있다.예:
upstream lixiang.test {
least_conn; #
server 192.168.0.1:8080 weight=2;
server 192.168.0.2:8080 backup;
server 192.168.0.3:8080 max_fails=3 fail_timeout=30s;
}
주의:
3.5). 제3자
제3자 의 부하 균형 전략의 실현 은 제3자 플러그 인 을 설치 해 야 한다.
3.5.1).fair
서버 측의 응답 시간 에 따라 요청 을 분배 하고 응답 시간 이 짧 은 우선 분배 합 니 다.
예:
upstream lixiang.test {
fair; #
server 192.168.0.1:8080;
server 192.168.0.2:8080;
server 192.168.0.3:8080;
}
3.5.2).url_hash
접근
url
의 hash
결과 에 따라 요청 을 할당 하여 각각 url
을 같은 백 엔 드 서버 로 지정 하고 캐 시 명중 에 맞 춰 사용 해 야 합 니 다.같은 자원 이 여러 번 요청 하면 서로 다른 서버 에 도착 하여 불필요 한 여러 번 다운로드, 캐 시 명중률 이 높 지 않 고 일부 자원 시간의 낭 비 를 초래 할 수 있 습 니 다.url_hash
를 사용 하면 같은 url
(즉 같은 자원 요청) 이 같은 서버 에 도착 하고 요청 을 받 으 면 캐 시 에서 읽 을 수 있 습 니 다.예:
upstream lixiang.test {
hash $request_uri; # url
server 192.168.0.1:8080;
server 192.168.0.2:8080;
server 192.168.0.3:8080;
}
4. Nginx 설정 상세 설명
위 에서 소개 한
Nginx
관련 정 보 는 틀림없이 Nginx 에 대해 어느 정도 알 고 있 을 것 이다. 다음은 Nginx
가장 중요 한 프로필 nginx.conf
을 소개 한다.설정 파일 의 내용 에 대해 상세 한 설명 을 하면 우리 가 사용 하고 이해 할 수 있 습 니 다.user www-data; #
worker_processes 2; # ( CPU 2 CPU)
error_log /var/log/nginx/error.log; #
pid /var/run/nginx.pid; #pid
worker_rlimit_nofile 65535; # worker CPU, Linux 2.4
#
events {
#epoll IO
# linux2.6 , nginx 。
#epoll Linux
use epoll;
worker_connections 65536;# worker process
}
# http ,
http {
include /etc/nginx/mime.types; # mime , mime.type
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 /var/log/nginx/access.log; #
#access_log off; # , off,
client_header_timeout 10; # 。 , ,Nginx “Request time out(408)” 。
client_body_timeout 10; # , 60。 , ,Nginx “Request time out(408)” 。
send_timeout 10; # 。 , , ,Nginx 。
client_max_body_size 600m; # 。
client_header_buffer_size 64k; # headerbuffer 。
large_client_header_buffers 4 64k; # ,“4” ,“32K”
# nginx sendfile (zero copy ) , , on,
# IO , off, I/O , uptime.
sendfile on;
tcp_nopush on; #
tcp_nodelay on; #
keepalive_timeout 60; # 。 , 。
# gzip ,
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
#
upstream lixiang.test1 {
# ( )
server 192.168.0.1:8080;
server 192.168.0.1:8081;
server 192.168.0.1:8082;
}
upstream lixiang.test2 {
#weigth , , 1
server 192.168.0.2:8081;
server 192.168.0.2:8082 weight=2;
server 192.168.0.2:8083 weight=3;
}
upstream lixiang.test3 {
ip_hash; # ip hash , ip
server 192.168.0.3:8081;
server 192.168.0.3:8082 weight=2;
server 192.168.0.3:8083 weight=3;
}
#
server {
listen 80; # 192.168.1.1 80
server_name 192.168.1.1;
root /data/webroot;
#location URL
# /lixiang/test1 lixiang.test1
location /lixiang/test1 {
proxy_pass http://lixiang.test1;
include proxy.conf; #
}
# /lixiang/test2 lixiang.test2
location /lixiang/test2 {
proxy_pass http://lixiang.test2;
}
#
location / {
root /data/webroot/web; #
index index.php index.html index.htm; #
proxy_pass http://lixiang.test3; # / lixiang.test3
autoindex off; #
autoindex_exact_size off; # , MB,GB , b
autoindex_localtime on; #
# Web X-Forwarded-For IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
# (allow) (deny) ip ip , ,
location /nginx-status {
stub_status on;
access_log off;
allow 192.168.10.100;
allow 192.168.20.0/24;
deny all;
}
#
error_page 500 502 503 504 404 /50x.html;
location = /50x.html {
root /root;
}
# 。
# , , 。
# ,
# .html 30d
#location ~ \.(html)$ {
# expires 30d;
#}
# 24h
#location ~ .*\.(gif|jpg|jpeg|png)$ {
# expires 24h;
#}
# .js .css 2h
#location ~ .*\.(js|css)$ {
# expires 2h;
#}
# ,nginx
#location ~ ^/(flash|media|static)/ {
# root /data/webroot/static;
# 30 , , , , 。
# expires 30d;
#}
# .htxxx
location ~ /\.ht {
deny all;
}
# WEB-INF
location ~ ^/(WEB-INF)/ {
deny all;
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
linux2에 nginx 설치설치 가능한 nginx를 확인하고, 해당 nginx를 설치한다. localhost 혹은 해당 ip로 접속을 하면 nginx 화면을 볼 수 있다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.