4. Nginx 모듈

8880 단어 nginxnginx-moduleauth
Nginx 공식 모듈
1.ngx_http_stub_status_module
http://nginx.org/en/docs/http...
이 모듈 은 nginx 가 패 킷 처리 에 대한 기본 정 보 를 볼 수 있 습 니 다.
#    
location /status {
  stub_status;
}

방문 /status, 전 시 된 데 이 터 는 다음 과 같 습 니 다.
Active connections: 4 
server accepts handled requests
310840 310840 481035 
Reading: 0 Writing: 1 Waiting: 3 

2. ngx_http_random_index_module
http://nginx.org/en/docs/http...
이 모듈 은 디 렉 터 리 에서 어떤 파일 을 무 작위 로 가 져 와 기본 홈 페이지 로 사용 합 니 다./usr/share/nginx/html/random 디 렉 터 리 에 aaa.html, bbb.html, ccc.html 세 개의 파일 이 있다 면 다음 설정 을 사용 하면 됩 니 다.
location /random {
    root /usr/share/nginx/html;
    random_index on;
}

다음 코드 는 무 작위 로 aaa, bbb, ccc 이 세 html 중 하 나 를 되 돌려 줍 니 다.
curl http://127.0.0.1/random/

3. ngx_http_sub_module
http://nginx.org/en/docs/http...
응답 내용 의 지정 한 문자열 을 바 꾸 는 데 사용 합 니 다.
location / {
    sub_filter '

4. ngx_http_limit_conn_module
http://nginx.org/en/docs/http...
HTTP 프로 토 콜
요청 및 연결
설명 하 다.
HTTP 1.0
TCP 는 다시 사용 할 수 없습니다.
하나의 연결, 하나의 요청
HTTP 1.1
순차 적 TCP 재 활용
하나의 연결 로 여러 요청 을 순서대로 보 낼 수 있 습 니 다.
HTTP 2.0
다 중 TCP 재 활용
하나의 연결 로 여러 요청 을 병행 할 수 있 습 니 다.
저 희 는 nginx zone 를 동적 데이터 베이스 로 이해 할 수 있 습 니 다. 1M 의 zone 메모 리 는 최소 16000 개의 기록 을 저장 하고 사용자 의 요구 가 합 법 적 인지 판단 할 수 있 습 니 다. 즉, 현재 IP 가 데이터 베이스 에 기록 한 수량 이 제한 을 초과 하 는 지 계속 조회 하 는 것 입 니 다.
다음 경로 요청 에서 저 희 는 사용자 의 동시 연결 수 를 각각 5 개 와 10 개 로 제한 합 니 다.
주의: 동시 다발 은 같은 시간의 요 구 량 을 말 하 며, 초당 요 구 량 과 차이 가 있 습 니 다.
http {
    limit_conn_zone $binary_remote_addr zone=addr_conn:10m;
    ...
    server {
        ...
        location / {
            limit_conn addr_conn 5;
             ...
        }
        location ~ \.php$ {
            limit_conn addr_conn 10;
            ...
        }
    }
}

코드 효 과 를 테스트 하기 위해 서, 우 리 는 설치 httpd-tools 하여 ab 테스트 를 진행 할 수 있다.limit_conn 의 테스트 는 내부 네트워크 테스트 든 외부 네트워크 테스트 든 모두 가능 하 다.
yum install httpd-tools
ab -n 20 -c 20 http://127.0.0.1/

실행 ab -n 20 -c 20 http://127.0.0.1/, 총 20 개의 연결 이 실 패 했 습 니 다. 15 개 실 패 했 습 니 다. 성공 적 으로 만 든 연결 수 는 5 개 에 불과 합 니 다.
항목
수치
Complete requests:
20
Failed requests:
15
실행 ab -n 20 -c 20 http://127.0.0.1/index.php, 총 20 개의 연결 이 실 패 했 습 니 다. 10 개의 연결 이 실 패 했 습 니 다. 성공 적 으로 만 든 연결 수 는 10 개 에 불과 합 니 다.
항목
수치
Complete requests:
20
Failed requests:
10
이상 의 테스트 를 통 해 얻 을 수 있 는 결론 은 코드 는 사람 을 속 이지 않 는 다 는 것 이다.
주파수 제한 으로 인 한 Failed requests 에 대해 우 리 는 nginxerror.log 에서 도 오류 기록 을 발견 할 수 있다.만약 오류 로그 가 너무 많다 면, 우 리 는 방 문 량 이 정상 인지 확인 해 야 한다.정상 이 라면 매개 변수 설정 을 최적화 하 는 방법 도 고려 해 야 한다.
2017/07/31 11:41:37 [error] 24550#0: *580766 limiting connections by zone "addr_conn", client: 119.130.188.64, server: www.siguoya.name, request: "GET / HTTP/1.0", host: "www.siguoya.name"
2017/07/31 11:41:37 [error] 24550#0: *580767 limiting connections by zone "addr_conn", client: 119.130.188.64, server: www.siguoya.name, request: "GET / HTTP/1.0", host: "www.siguoya.name"

5.ngx_http_limit_req_module
http://nginx.org/en/docs/http... ngx_http_limit_conn_module 병발 연결 수 를 제한 하 는 데 사용 되 고 ngx_http_limit_req_module 병발 요청 수 를 제한 하 는 데 사용 된다.실제 업무 장면 에서 보통 사용 ngx_http_limit_req_module 이 더 많 을 것 이다.
http {
    limit_req_zone $binary_remote_addr zone=addr_req:10m rate=1r/s;
    ...
    server {
        ...
        location / {
            limit_req zone=addr_req;
        }
    }
}

6.ngx_http_access_module
http://nginx.org/en/docs/http...
이 모듈 은 제한 ip 을 통 해 방문 통 제 를 실현 할 수 있 지만 단점 은 우리 가 가끔 진실 한 IP 를 얻 지 못 하고 사용자 의 IP 도 동태 적 으로 변화 할 수 있 으 며 오 살 되 기 쉽다 는 것 이다.
다음 과 같은 방법 으로 보완 할 수 있다.
  • x_forwarded_for 그러나 믿 을 수 없고 수정 되 거나 전달 되 지 않 을 가능성 이 있다
  • geo 모듈
  • HTTP 사용자 정의 변 수 를 통 해 전달
  • location / {
        allow 192.168.1.0/24;
        deny  all;
    }

    7.ngx_http_auth_basic_module
    http://nginx.org/en/docs/http...
    이 모듈 은 사용자 가 특정 페이지 를 방문 할 때 정확 한 계 정과 비밀 번 호 를 입력 해 야 접근 할 수 있 도록 요구 하여 비교적 초급 권한 제어 기능 을 실현 할 수 있다.
    location /auth_basic {
      auth_basic "custom comment for this auth_basic";
      auth_basic_user_file /usr/local/nginx/conf/.passwd;
    }
    auth_basic_user_file 사용 한 파일 에 대하 여 우 리 는 htpasswd 이 도 구 를 사용 하여 실현 할 수 있다.
    #        
    htpasswd -bc username password >> .passwd
    #               
    htpasswd -b username password >> .passwd
    ngx_http_auth_basic_module 의 결함 은 다음 과 같다. 사용자 권한 은 권한 수여 문서 에 의존 하기 때문에 기업 에 여러 개의 사용자 계 정 체계 가 있 고 운영 에 번 거 로 움 을 초래 하기 쉽다.
    해결 방법:
  • 결합 lua 효율 적 인 인증 실현
  • 이용 nginx-auth-ldap 모듈 과 ldap 연결
  • Nginx 제3자 모듈
    관심 있 는 방문 가능 https://www.nginx.com/resourc..., 여기 서 일일이 소개 하지 않 겠 습 니 다.
    특정한 제목 으로 읽다.
  • 1. Nginx 의 장점
  • 2. Nginx 의 설치 와 켜 기 자동 켜 기
  • 3. Nginx 디 렉 터 리 와 설정 문법
  • 4. Nginx 모듈
  • 5. Nginx 정적 자원 처리
  • 6. Nginx 브 라 우 저 캐 시 원리
  • 7. Nginx 자원 의 크로스 도 메 인 접근
  • 8. Nginx 자원 의 도 난 방지 체인
  • 9. Nginx 에이전트
  • 10. Nginx 부하 균형
  • 11. Nginx 캐 시
  • 12. Nginx 동정 분리
  • 13. Nginx Rewrite
  • 14. Nginx Secure Link
  • 15. Nginx Geo
  • 16. Nginx HTTPS 서비스
  • 17. Nginx 와 Lua 개발
  • 18. Nginx 와 Lua 그 레이스 케 일 발표
  • 19. Nginx 에서 흔히 볼 수 있 는 오류
  • 20. Nginx 성능 최적화
  • 21. Nginx 안전 관리
  • 좋은 웹페이지 즐겨찾기