nginx 입문 강좌

nginx 는 오픈 소스 의 고성능 웹 서버 (성능 이 가장 좋 을 수 있 습 니 다) 로 사용 이 매우 광범 위 합 니 다. 정적 자원 을 배치 할 수도 있 고 역방향 프 록 시 로 도 사용 할 수 있 으 며 부하 균형 서버 로 도 사용 할 수 있 습 니 다.
설치 및 시작
#   
yum install nginx

#   
service start nginx

#       
nginx -s reload

프로필
기본 설정 파일 은 /etc/nginx/nginx.conf 에 있 습 니 다. 이 파일 은 설정 파일 의 입구 입 니 다. 일반적으로 전역 정 보 를 설정 합 니 다.
user nginx;
worker_processes auto;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    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 main;
    sendfile on;
    keepalive_timeout 65;

    include /etc/nginx/conf.d/*.conf;
}

이 프로필 에는 일반적으로 한 문장 include /etc/nginx/conf.d/*.conf 이 있 는데, 각 하위 서비스의 설정 정 보 를 포함한다
정적 사이트/etc/nginx/conf.d 에 파일 하나만 추가 example.com.conf
server {
    listen 80;
    #          
    server_name example.com;

    access_log /var/log/nginx/example.log main;
    error_log /var/log/nginx/example.err main;

    location / {
        #            
        root /var/www/example;
        try_files $uri $uri/ /index.html;
        index index.html index.htm;
    }
}
  • server_name: 서비스의 이름, 사용 자 는 이 이름 으로 서 비 스 를 방문 하고 서로 다른 서 비 스 는 서로 다른 server 를 사용 합 니 다.name 구분, 같은 nginx 인 스 턴 스 에서 여러 서 비 스 를 배치 할 수 있 습 니 다
  • root: 정적 자원 경로
  • access_log: 로그 출력 경로, 로그 형식 은 마지막 매개 변 수 를 통 해 지정 합 니 다. 이 main 은 로그 형식 이름 입 니 다. 이전 프로필 에서 log_format
  • 역방향 에이전트
    마찬가지 로 /etc/nginx/conf.d 에 파일 하 나 를 추가 proxy.conf
    upstream yourservice {
        keepalive 32;
        server yourserver:;
    }
    
    server {
        listen       80;
        server_name  proxy;
    
        access_log /var/log/nginx/proxy.log access;
        error_log /var/log/nginx/proxy.err;
    
        location / {
            proxy_pass http://yourservice;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header User-Agent $http_user_agent;
            proxy_set_header X-Real-IP $http_x_real_ip;
            proxy_set_header X-Forwarded-For $http_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
  • upstream: 하나의 서 비 스 를 정의 합 니 다. server 안에 여러 개의 백 엔 드 서비스 주 소 를 지정 하고 nginx 를 이용 하여 부하 균형
  • 을 만 들 수 있 습 니 다.
  • proxy_pass: 우리 가 정의 한 서비스 에 역방향 대리
  • proxy_set_header: 서 비 스 를 요청 할 때 머리 필드 를 설정 합 니 다. 예 를 들 어 userAgent 와 클 라 이언 트 ip
  • 클 라 이언 트 ip 는 일반적으로 X - Real - IP 와 X - Forward - for 에 설정 되 어 있 습 니 다.
    내장 변수
    nginx 설정 파일 에 대량의 내장 변 수 를 제공 합 니 다.
  • $romote_addr: 클 라 이언 트 ip 주소
  • $remote_user: 클 라 이언 트 사용자 이름
  • $time_local: local 형식 시간
  • $time_iso8601: iso 8601 형식 시간
  • $scheme: http 프로 토 콜
  • $request: 요청 한 url 과 http 프로 토 콜
  • $status: 되 돌아 오 는 상태 코드
  • $body_bytes_sent: 되 돌아 오 는 패키지 크기
  • $http_referer: 요청 페이지 원본, header ["Referer"]
  • $http_user_agent: 브 라 우 저 정보, 헤더 ["User - Agent"]
  • $http_x_real_ip: 사용자 실제 ip, header ["X - Real - IP"]
  • $http_x_forwarded_for: 대리 과정, header ["X - Forward - FOR"]
  • json 로그
    로그 분석 이 필요 하 다 면 json 형식의 로 그 를 사용 하 는 것 이 좋 습 니 다. log_format 명령 을 통 해 로그 형식 을 사용자 정의 할 수 있 습 니 다.
    http {
        log_format access escape=json
                '{'
                    '"@timestamp":"$time_iso8601",'
                    '"remoteAddr":"$remote_addr",'
                    '"remoteUser":"$remote_user",'
                    '"xRealIP":"$http_x_real_ip",'
                    '"xForwardedFor":"$http_x_forwarded_for",'
                    '"request":"$request",'
                    '"status": $status,'
                    '"bodyBytesSent":"$body_bytes_sent",'
                    '"resTimeS":"$request_time",'
                    '"referrer":"$http_referer",'
                    '"userAgent":"$http_user_agent"'
                '}';
    }

    이 로그 형식 은 /etc/nginx/nginx.conf http 필드 에서 정의 할 수 있 으 며, 각 server 는 직접 참조 할 수 있 습 니 다.
    server {
        access_log /var/log/nginx/example.log access;
    }

    날짜 형식 이 베 이 징 시간 으로 표시 되 기 를 원한 다 면 시간 대 를 설정 해 야 합 니 다.
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    echo "Asia/Shanghai" >> /etc/timezone

    gzip 압축
    돌아 오 는 정적 자원 이 비교적 크 고 대역 폭 이 병목 이 되 므 로 gzip 압축 을 고려 할 수 있 습 니 다. 200 k 의 파일 은 몇 십 k 까지 압축 할 수 있 고 효과 가 뚜렷 합 니 다. gzip 를 여 는 설정 도 간단 합 니 다. 직접 수정 /etc/nginx/nginx.conf 하면 됩 니 다.
    http {
        gzip on;
        gzip_min_length 1k;
        gzip_buffers 4 16k;
        gzip_comp_level 8;
        gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript;
        gzip_vary on;
        gzip_disable "MSIE [1-6]\.";
    }

    링크
  • 코드 링크: https://github.com/hpifu/dock...
  • 공식 초보 자 강좌: http://nginx.org/en/docs/begi...
  • 공식 문서: http://nginx.org/en/docs/
  • nginx 소스 코드: https://github.com/nginx/nginx
  • 전재 출처 를 밝 혀 주 십시오
    본문 링크:
    https://tech.hatlonely.com/edit/53

    좋은 웹페이지 즐겨찾기