nginx 상용 설정 예 참조

8845 단어 네트워크nginx
개술
nginx 를 배우 기 전에 간단하게 사용 할 수 밖 에 없 었 기 때문에 매번 nginx 를 설정 할 때마다 문 서 를 찾 아서 어떻게 설정 하 는 지 알 아 보 는 것 이 귀 찮 습 니 다. 그래서 자주 사용 하 는 nginx 설정 과 설정 의 예 를 기록 하고 그때 직접 copy 로 수정 하면 됩 니 다.
nginx 의 주요 기능 은 정적 파일 의 서버, 부하 균형, 재 작성 또는 url, 정방 향 프 록 시, 역방향 프 록 시 등 입 니 다.
여기 서 사용 하 는 nginx 버 전 은 1.16.0 입 니 다.
프로필 의 주요 구 조 는:
nginx.conf
http{

  #            
  upstream backend {
    server backend1.example.com       weight=5;
    server backend2.example.com:8080;
    server backup2.example.com:8080   backup;
  }
  #     1,               
  server{
    listen 8080;
    location / {
      proxy_pass http://localhost:8080;
    }
  }
  
  #    server      2
  server{
    listen 80;
    location ~ \.(gif|jpg|png)$ {
      proxy_pass http://backend;
    }
  }
  # includ      nginx           ,              ,        server          。
  include cust_conf/mainconf; #          ,             ,        
  includ /data/host/config/*.conf;
}


시작 관련
윈도우 시작
cmd 명령 설치 파일 에 들 어가 기;
1. 시작: C:\server
ginx-1.0.2>start nginx
또는 C:\server
ginx-1.0.2>nginx.exe
주: 첫 번 째 를 사용 하 는 것 을 권장 합 니 다. 두 번 째 는 cmd 창 을 계속 실행 중 이 며 다른 명령 을 수행 할 수 없습니다.
참고:https://www.jianshu.com/p/01f3626cf25d
nginx 명령 행 매개 변수
많은 다른 소프트웨어 시스템 과 달리 Nginx 는 명령 행 인자 만 몇 개 있 고 설정 파일 을 통 해 완전히 설정 합 니 다.-c 부족 한 것 대신 Nginx 에 프로필 을 지정 합 니 다.-t 실행 되 지 않 고 설정 파일 만 테스트 합 니 다.nginx 는 프로필 의 문법 적 정확성 을 검사 하고 프로필 에 사 용 된 파일 을 열 려 고 합 니 다.용법: nginx -t 이 명령 도 nginx 파일 의 위 치 를 볼 수 있 습 니 다.-v nginx 버 전 을 표시 합 니 다.-V nginx 버 전, 컴 파일 러 버 전, 설정 파 라미 터 를 표시 합 니 다.
시작, 정지, 다시 불 러 오기 설정
nginx 를 실행 할 수 있 는 실행 가능 한 파일 을 통 해 nginx 를 직접 시작 할 수 있 습 니 다.nginx 가 시작 되면 nginx 플러스 -s 인 자 를 실행 하여 nginx 의 일부 행 위 를 제어 할 수 있 습 니 다.용법 은 다음 과 같다.
nginx -s ${signal}

${signal} 은 다음 네 개의 값 을 사용 할 수 있 습 니 다:
  • stop - fast shutdown 쾌속 정지
  • quit - graceful shutdown 우아 정지
  • reload - 설정 파일 을 다시 불 러 오기
  • reopen - 로그 파일 을 다시 열 고 로그 파일 을 다시 엽 니 다
  • 예 를 들 어 변경 한 프로필 을 실행 nginx -s reload 을 통 해 다시 불 러 올 수 있 습 니 다.
    정적 파일 서버
        전단 파일 이나 이미지 서비스의 배 치 는 일반적으로 이 기능 을 사용 합 니 다. nginx 서버 를 통 해 (sering out) 파일 을 배포 한 다음 에 사용 자 는 네트워크 에서 ip 또는 도 메 인 이름 으로 직접 접근 할 수 있 습 니 다.
    1. stats - server. kanlon. com 에 접근 하여 /data/fr 아래 디 렉 터 리 를 정적 파일 로 접근 합 니 다.
    server {
        #     81,         stats-server.kanlon.com      
        listen 81;
        server_name stats-server.kanlon.com;
        charset utf8;
        #       index   false,       
        autoindex off;
        #          
        index  index.html index.htm index.php;
        #    /img/   ,             /data/img/  
        location /img/ {
           alias /data/img/;
        }
        location / {
            root /data/fr;
        }
    }
    
    

    접근 에 오류 가 발생 하면 logs / error. log 의 오류 로 그 를 볼 수 있 습 니 다. 실제 접근 한 파일 경 로 를 출력 합 니 다.그리고 nginx 를 테스트 할 때 여러 개의 nginx 가 시작 되 었 는 지 주의해 야 합 니 다. 그렇지 않 으 면 설정 이 바 뀌 었 을 수도 있 습 니 다.
    부하 균형
    nginx 를 통 해 자신 이 지정 한 서비스 도 메 인 이름 을 자동 으로 전송 하고 단일 서비스 요 구 량 을 줄 이 며 서 비 스 를 실현 할 수 있 습 니 다.
    nginx 에 서 는 기본적으로 ngx 를 통 해http_upstream_모듈 모듈 구현
    1. load - balancing - test. kanlon. com: 83 에 접근 하면 load - balancing - test - 1kanlon. com: 84, load - balancing - test - 2. kanlon. com: 85, load - balancing - test - 3. kanlon. com: 86 세 도 메 인 이름
    그 중에서 요구 load-balancing-test-3.kanlon.com:86 는 백업 서비스 로 서 load - balancing - test. kanlon. com - 1: 84 와 load - balancing - test - 2. kanlon. com: 85 의 요구 수 분포 비율 은 1: 2 이다.
    #       ,  502,503,504,404          ,60                      
    proxy_next_upstream http_502 http_503 http_504 http_404 error timeout invalid_header;
    upstream balancing {
        server load-balancing-test-1.kanlon.com:84 max_fails=1 fail_timeout=60s  weight=1;
        server load-balancing-test-2.kanlon.com:85 max_fails=2 fail_timeout=60s  weight=2;
        server load-balancing-test-3.kanlon.com:86 backup;
    }
    server {
        #     83,         load-balancing-test.kanlon.com      
        listen 83;
        server_name load-balancing-test.kanlon.com;
        #       index   false,       
        autoindex off;
        #          
        index  index.html index.htm index.php;
        location / {
            proxy_pass http://balancing;
        }
    }
        
    server {
        #     84,         load-balancing-test-1.kanlon.com      
        listen 84;
        server_name load-balancing-test-1.kanlon.com;
        charset utf8;
        #       index   false,       
        autoindex off;
        #          
        index  index.html index.htm index.php;
        location / {
            #                          
            root /data/nginx/load-balancing/load-balancing-test-1;
        }
    }
    server {
        #     85,         load-balancing-test-2.kanlon.com      
        listen 85;
        server_name load-balancing-test-2.kanlon.com;
        charset utf8;
        #       index   false,       
        autoindex off;
        #          
        index  index.html index.htm index.php;
        location / {
            #                          
            root /data/nginx/load-balancing/load-balancing-test-2;
        }
    }
    server {
        #     86,         load-balancing-test-3.kanlon.com      
        listen 86;
        server_name load-balancing-test-3.kanlon.com;
        charset utf8;
        #       index   false,       
        autoindex off;
        #          
        index  index.html index.htm index.php;
        location / {
            root /data/nginx/load-balancing/load-balancing-test-3;
        }
    }
    
    

    그 중 에는 nginx 의 건강 검진 명령 이 포함 되 어 있다.
    max_fails = number 는 Nginx 가 서버 와 통신 하려 는 시도 가 실패 한 횟수 를 설정 합 니 다.fail 에서timeout 매개 변수 가 정 의 된 시간 대 에 실패 한 횟수 가 이 값 에 도달 하면 Nginx 는 서버 를 사용 할 수 없다 고 생각 합 니 다.다음 failtimeout 시간 대 에 서버 는 더 이상 시도 되 지 않 습 니 다.실패 한 시도 횟수 는 기본적으로 1 입 니 다.0 으로 설정 하면 시도 횟수 를 집계 하지 않 고 서버 가 계속 사용 할 수 있다 고 생각 합 니 다.명령 을 통 해 proxynext_upstream、fastcgi_next_upstream 과 memcachednext_upstream 에서 실패 한 시 도 를 설정 합 니 다.기본 설정 시 http404 상 태 는 실패 한 시도 로 간주 되 지 않 습 니 다.
    fail_timeout = time 설정 서버 가 사용 할 수 없 는 시간 대 와 실패 시도 횟수 를 집계 하 는 시간 대 입 니 다.이 기간 동안 서버 실패 횟수 가 지 정 된 시도 횟수 에 이 르 면 서버 는 사용 할 수 없다 고 여 겨 진다.
    다시 쓰 거나 url 로 바 꾸 기
    nginx 는 일치 하 는 url 을 다른 url 로 바 꿀 수 있 습 니 다. 주 소 를 바 꾸 는 것 을 포함 합 니 다.
    rewrite - local. kanlon. com / rewrite / same / site / * * 를 rewrite - local. kanlon. com / rewrite 2 / same / site / * 로 재 설정 하고 rewrite - local. kanlon. com / rewrite / other / site 를 rewrite - other. kanlon. com / rewrite 2 / same / site 로 재 설정 합 니 다.
    server {
        #     88,         rewrite-local.kanlon.com      
        listen 88;
        server_name rewrite-local.kanlon.com;
        charset utf8;
        #       index   false,       
        autoindex off;
        #          
        index  index.html index.htm index.php;
    
        #            
        location /rewrite/same/site {
            rewrite ^/rewrite/same/site(.*)$ /rewrite2/same/site$1 last;
        }
        
        #         ,       ,;      permanent (      301   ),    302      
        location /rewrite/other/site {
            rewrite ^/rewrite/other/site(.*)$ http://rewrite-other.kanlon.com:89/rewrite2/same/site$1 permanent;
        }
    
        location /rewrite2/same/site {
           default_type text/html;
           return 200 "$request_uri";
        }
    
        location / {
            root /data/nginx/rewrite-test/rewriter-local;
        } 
    }
    
    server {
        #     89,         rewrite-other.kanlon.com      
        listen 89;
        server_name rewrite-other.kanlon.com;
        charset utf8;
        #       index   false,       
        autoindex off;
        #          
        index  index.html index.htm index.php;
    
        location /rewrite2/same/site {
           default_type text/html;
           return 200 "$request_uri";
        }
        location / {
            root /data/nginx/rewrite-test/rewriter-other;
        } 
    }
    

    정방 향 에이전트
    정방 향 프 록 시 는 우리 가 평소에 사용 하 는 것 처럼 우리 가 방문 하 는 도 메 인 이름 은 변 하지 않 습 니 다. 단지 nginx 를 통 해 요청 과 요청 을 보 내 고 자신의 클 라 이언 트 로 돌아 갈 뿐 입 니 다.nginx 는 기본적으로 http 프로 토 콜 의 정방 향 대 리 를 지원 합 니 다. https 를 지원 하려 면 구성 요 소 를 설치 해 야 합 니 다.
    nginx 설정 은 다음 과 같 습 니 다:
    server {
        listen       90;
        server_name  forward-agent.kanlon.com;
        #      DNS     IP  
        resolver 8.8.8.8;
        location / {
            proxy_pass http://$http_host$request_uri;
        }
    }
    

    그리고 자신의 컴퓨터 에 프 록 시 서버 와 포트 를 설정 하면 정방 향 프 록 시 를 완성 할 수 있 습 니 다.
    역방향 에이전트
    역방향 프 록 시 는 nginx 의 도 메 인 이름 을 직접 방문 하여 원래 자원 에 접근 할 도 메 인 이름 을 대체 한 다음 에 원래 자원 의 도 메 인 이름 을 되 돌려 주 는 결 과 를 얻 습 니 다.
    server {
        listen       91;
        server_name  reverse-proxy.kanlon.com;
      
        #    
        location / {
            proxy_pass http://127.0.0.1:8080;
        }
    }
    

    참고 문서
  • nginx 공식 문서
  • nginx 중국어 문서
  • Nginx 홈 페이지 번역
  • Windows 에서 Nginx 의 시작, 정지, 재 부팅 명령
  • Nginx 정방 향 에이전트 와 역방향 에이전트
  • nginx 에서 흔히 볼 수 있 는 정규 일치 기호 표시
  • Nginx 실전 시리즈 의 기능 편 - 백 엔 드 노드 건강 검진
  • 좋은 웹페이지 즐겨찾기