nginx 운영 (3) nginx 가상 호스트, 로그 관리 및 location

며칠 동안 nginx 의 것 을 쓰 지 않 았 습 니 다. 요 며칠 동안 실습 하 느 라 바 빠 서 많이 보지 못 했 습 니 다. 오늘 시간 을 내 서 한 편 더 쓰 겠 습 니 다.
nginx 설정 세그먼트
여기 서 nginx 의 프로필 을 살 펴 본 다음 에 그 중의 주요 부분 에 대해 상세 하 게 분석 하고 다음 명령 으로 nginx 의 프로필 nginx. conf 를 봅 니 다.
[master@localhost nginx]$ sudo vim conf/nginx.conf

nginx. conf 는 nginx 의 설치 디 렉 터 리 에서 설치 할 디 렉 터 리 와 관련 이 있 습 니 다.
/ / (1) 전역 workerprocesses 1; // 1 개의 하위 프로 세 스 가 있 습 니 다. 스스로 수정 할 수 있 지만 너무 크 고 무익 합 니 다. CPU 를 쟁탈 하려 면 일반적으로 CPU 수 * 핵 수로 설정 합 니 다.
 
//(2)
Event {
/ / 일반적으로 nginx 연결 을 설정 하 는 특성
/ / 예 를 들 어 하나의 워드 가 동시에 얼마나 많은 연결 을 허용 할 수 있 습 니까?
 worker_connections  1024; / 이것 은 하위 프로 세 스 가 1024 개의 연결 을 최대 로 허용 하 는 것 을 말한다
}
 
//(3)
http {  //http 서버 를 설정 하 는 주요 세그먼트 입 니 다.
     Server 1 {/ 가상 호스트 세그먼트 입 니 다.
      
            Location {  //이미지 디 렉 터 리 와 같은 특수 한 경로 나 파일 을 다시 찾 습 니 다.
            }             /// 예 를 들 어. php 단독 처리
 
     }
 
     Server2 {
     }}
이것 은 일반적인 프로필 형식 입 니 다. 이 프로필 에서 우 리 는 nginx 의 성능 을 향상 시 키 기 위해 일련의 최적화 를 할 수 있 습 니 다. 그러나 이것 은 이번 의 중점 이 아니 기 때문에 이 파일 자 체 를 강조 합 니 다.
(1) nginx 의 전역 설정 영역 입 니 다.
(2) nginx 의 연결 특성 을 설정 하 는 설정 영역 입 니 다. 워 커 가 연결 할 수 있 는 파일 수 를 설정 할 수 있 습 니 다. 어떤 통신 모델 (select, epoll 등) 을 사 용 했 는 지 설정 할 수 있 습 니 다.
(3) 이것 은 http 서버 의 설정 세그먼트 입 니 다. 그 중에서 server 는 가상 호스트 설정 이 고 가상 호스트 는 여러 개 를 설정 할 수 있 습 니 다.
가상 호스트 설정
도 메 인 이름과 포트 기반 가상 호스트
/ / 예 1: 도 메 인 이름 기반 가상 호스트
 
    server {
        listen 80;  #감청 포트
        server name a. com; \ # 도 메 인 감청
 
        location / {
                root/var/www/a.com;   #루트 디 렉 터 리 위치 지정
                indexindex.html;
        }
    }
 
/ / 예 2: 포트 기반 가상 호스트 설정
 
    server {
        listen 8080;
        server_name 192.168.1.204;
 
        location / {
                root/var/www/html8080;
                indexindex.html;
        }
    }
로그 관리
nginx 의 server 세그먼트 를 관찰 하면 다음 과 같은 정 보 를 볼 수 있 습 니 다.
 #access_log  logs/host.access.log  main;
이 서버 의 접근 로그 파일 은  logs/host.access.log ,
사용 하 는 형식 "main" 형식 입 니 다.
main 형식 을 제외 하고 다른 형식 을 사용자 정의 할 수 있 습 니 다.
 
main 형식 이 뭐 예요?
log_format  main  '$remote_addr - $remote_user [$time_local]"$request" '
    #                  '$status $body_bytes_sent"$http_referer" '
    #                  '"$http_user_agent""$http_x_forwarded_for"';
 main 형식 은 로그 의 형식 을 정의 하고 이름 을 지어 서 인용 하기 편리 합 니 다.
위의 예 를 들 어 main 형식의 로그, 기 록 된 reote addr... http x forward for 등 옵션 입 니 다.
 
1: 로그 형식 이란 어떤 옵션 을 기록 하 는 것 을 말 합 니 다.
기본 로그 형식: main
     log_format  main '$remote_addr - $remote_user [$time_local] "$request" '
                           '$status $body_bytes_sent "$http_referer" '
                            '"$http_user_agent""$http_x_forwarded_for"';
 
기본 main 로그 형식 과 같이 이 몇 가 지 를 기록 합 니 다.
원 격 IP - 원 격 사용자 / 사용자 시간 요청 방법 (예: GET / POST) 요청 체 body 길이 referer 원본 정보
http - user - agent 사용자 에이전트 / 거미, 전송 요청 의 원본 IP
http x forward for: 프 록 시 를 거 칠 때 프 록 시 는 원래 IP 를 이 헤더 정보 에 추가 하여 원본 IP 를 전송 합 니 다.
 
2: 독특한 log format 를 설명 하고 이름 을 짓 기
 
    log_format  mylog '$remote_addr- "$request" '
                     '$status$body_bytes_sent "$http_referer" '
                       '"$http_user_agent" "$http_x_forwarded_for"';
아래 server / location 에서 my log 를 참조 할 수 있 습 니 다.
server 세그먼트 에서 이렇게 설명 합 니 다.
Nginx 는 서로 다른 server 에 대해 서로 다른 로 그 를 할 수 있 습 니 다. (lighttp 와 같은 웹 서버 는 지원 되 지 않 습 니 다)
 
access_log logs/access_8080.log mylog;   성명 로그   로그 위치          로그 형식;
실제 응용: 셸 + 정시 작업 + nginx 신호 관리, 로그 완료 날짜 에 따라 저장
분석 방향: 새벽 00: 00: 01, 어제 로 그 를 이름 을 바 꾸 고 해당 디 렉 터 리 에 두 고 USR 1 정보 번호 제어 nginx 에서 새로운 로그 파일 을 다시 만 듭 니 다.
구체 적 인 스 크 립 트:
#!/bin/bash
base_path='/usr/local/nginx/logs'
log_path=$(date -d yesterday +"%Y%m")
day=$(date -d yesterday +"%d")
mkdir -p $base_path/$log_path
mv $base_path/access.log $base_path/$log_path/access_$day.log
#echo $base_path/$log_path/access_$day.logkill-USR1 `cat /usr/local/nginx/logs/nginx.pid`
정시 임무
Crontab 정시 작업 편집
01 00 * * * /xxx/path/b.sh  매일 0 시 1 분 (02 - 04 시 사이 에 시스템 부하 가 적 음 을 권장 합 니 다)
위치 문법
location 은 "위치 추적" 이라는 뜻 으로 Uri 에 따라 위치 추적 이 다 릅 니 다. 가상 호스트 설정 에 서 는 없어 서 는 안 됩 니 다. location 은 사이트 의 다른 부분 을 서로 다른 처리 방식 으로 찾 을 수 있 습 니 다. 예 를 들 어. php 를 만나면 어떻게 PHP 해석 기 를 호출 합 니까? - 이 럴 때 locationlocation 의 문법 location [= | ~ * ^] patt {} 이 필요 합 니 다.중 괄호 는 매개 변 수 를 쓰 지 않 아 도 됩 니 다. 이 때 는 일반 일치 라 고도 부 르 고 매개 변 수 를 쓸 수 있 습 니 다. 따라서 큰 유형 은 3 가지 location = patt {} [정확 한 일치] location patt {} [일반 일치] location ~ patt {} [정규 일치] 로 나 눌 수 있 습 니 다.
어떻게 역할 을 발휘 합 니까?:
우선 정확 한 일치 가 있 는 지, 있 으 면 일치 하 는 과정 을 중단 합 니 다.
location = patt {
   config A
}
$uri = = patt 가 일치 하면 configA 를 사용 합 니 다.
location = / {
              root   /var/www/html/;
            index  index.htm index.html;
       }
        
 location / {
            root   /usr/local/nginx/html;
           index  index.html index.htm;
  }
하면, 만약, 만약...http://xxx.com/
포 지 셔 닝 프로 세 스
1: 정확 한 일치 중 "/"   ,index 페이지 를 index. htm 로 가 져 옵 니 다.
2: 다시 방문 / index. htm, 이번 내부 점프 uri 는 이미 "/ index. htm" 입 니 다.
루트 디 렉 터 리 는 / usr / local / nginx / html 입 니 다.
3: 최종 결과, / usr / local / nginx / html / index. htm 에 접근 하 였 습 니 다.
다시 보 니 정규 도 참여 한다.
location / {
            root   /usr/local/nginx/html;
            index  index.html index.htm;
        }
 
location ~ image {
           root /var/www/image;
           index index.html;
}
하면, 만약, 만약...  http://xx.com/image/logo.png
이 때 "/" 는 "/ image / logo. png" 와 일치 합 니 다.
이 동시에 'image' 는 'image / logo. png' 와 도 일치 하 는데 누가 역할 을 합 니까?
정규 표현 식 의 성 과 는 사 용 될 것 입 니 다.
그림 은 정말 / var / www / image / logo. png 에 접근 합 니 다. 
location = / {
              root   /var/www/html/;
            index  index.htm index.html;
       }
        
 location / {
            root   /usr/local/nginx/html;
           index  index.html index.htm;
  }
하면, 만약, 만약...http://xxx.com/

좋은 웹페이지 즐겨찾기