nginx 운영 (3) nginx 가상 호스트, 로그 관리 및 location
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/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.