nginx - 1 - 기본 설정

8117 단어
1. 프로필nginx 실 행 될 때의 설정 은 nginx.conf 이 파일 에서 온 것 입 니 다. 기본 값 은 이 경로 에서: /etc/nginx/nginx.conf (CentOS 의 경우) 이지 만 운영 체제 와 설치 방식 에 따라 차이 가 있 습 니 다. nginx -t 이 명령 을 통 해 이 경 로 를 볼 수 있 습 니 다.
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

위의 이 명령 은 nginx 의 설정 이 정상 적 인지 테스트 하 는 것 입 니 다. 출력 은 nginx.conf 의 절대 경 로 를 가지 고 있 습 니 다.
물론 다른 nginx.conf 을 사용 하고 싶다 면 nginx -c 뒤에 사용 할 파일 의 경 로 를 사용 하면 됩 니 다. 예 를 들 어:
sudo nginx -c /home/user/nginx.conf
nginx 에 대한 모든 명령 은 nginx -h 또는 nginx -? 을 통 해 도움말 을 볼 수 있 습 니 다.
2. 파일 형식 설정
가장 기본 적 인 설정 형식 은 다음 과 같 습 니 다.
events {

}
http {
  server {
  }
}

이 빈 설정 으로 바로 사용 할 수 있 습 니 다. nginx 을 시작 해서 검증 할 수 있 습 니 다.
sudo nginx

$ curl -I 127.0.0.1
HTTP/1.1 200 OK #           
Server: nginx/1.11.5
nginx 기본 값 으로 로 컬 80 포트 를 감청 한 다음 파일 경 로 는 /usr/share/nginx/html 입 니 다.
다음은 완전한 설정 으로 설명 하 겠 습 니 다.
user nobody; # simple directive
worker_processes 1; # simple directive
events { # context directive
  worker_connections 512; # simple directive
}

http { # context directive
  server { # context directive
    listen *:80; # simple directive
    server_name ""; # simple directive
    root /usr/share/nginx/html; # simple directive
  }
}

설정 파일 은 directives (명령) 으로 구성 되 어 있 습 니 다. simple directivecontext directive 두 문법 이 같 습 니 다. 다른 것 은 context directive 의 내용 은 {} 에 포함 되 고 simple directive 의 끝 은 분점 ; 입 니 다.
2.1 단순 지시 어 (단순 명령 어)
문법:
name parameters ;

매개 변 수 는 여러 개 일 수도 있 고 키 형식 key=value 일 수도 있 습 니 다. 예 를 들 어:
listen *:80;
listen *:80 ssl backlog=511;

결말 의 분점 ; 을 잊 지 마라. 그렇지 않 으 면 잘못 보고 할 것 이다.
2.2 context directive (환경 명령)
문법 은 Simple directive 와 비슷 하고 다른 context directive 에 도 포함 되 며 다른 명령 도 계승 할 수 있 습 니 다. 예 를 들 어:
server {
  root /usr/share/nginx/html;
  location /foo {
    root /usr/share;
  }
}
/foo 에 정의 root 디 렉 터 리 가 없 으 면 외부 디 렉 터 리 를 사용 합 니 다.정 의 를 내리 면 자신 이 정의 하 는 것 을 사용 할 것 이다.
간단 한 명령 은 Context 명령 에 만 포 함 됩 니 다. 그 중에서 전체 파일 의 가장 바깥쪽 에 기본적으로 내 현적 인 main context 명령 이 있 습 니 다. 구체 적 인 명령 조 회 는 홈 페이지 에서 준 Alphabetical index of directives 를 볼 수 있 습 니 다. 예 를 들 어 보기 location:
Syntax: location [ = | ~ | ~* | ^~ ] uri { ... } #   
location @name { ... } 
Default:    — #    
Context:    server, location #    Context,     

3. 상용 명령
3.1 이벤트 명령
nginx 는 이벤트 구동 형 서버 입 니 다. 이 events 명령 은 이벤트 구동 과 관련 된 것 을 설정 할 수 있 습 니 다. 예 를 들 어 최대 연결 수 등 입 니 다. 예 를 들 어:
events {
  worker_connections 512; #      
}
  • events 명령 이 있 고 하나 밖 에 없 으 며 가장 바깥쪽 에 있어 야 한다.
  • 이 연결 수량 은 클 라 이언 트 의 요청 뿐만 아니 라 nginx 후속 작업 을 해 야 할 연결 수량 도 포함한다.
  • Liux 는 모든 연결 을 open file 로 보고 모든 프로 세 스 의 이 조작 에 limit 이 있 습 니 다. 연결 수 를 늘 리 려 면 시스템 정의 maximum number of open files allowed 를 향상 시 켜 야 합 니 다.
  • 3.2 HTTP 및 서버 명령HTTP 명령 은 HTTP 서버 와 관련 된 것 을 정의 하고 가장 바깥쪽 에 만 놓 을 수 있 습 니 다.Server 구체 적 인 가상 서버 설정 을 정의 하 는 것 으로 HTTP 등 사용 가능 한 Context 명령 에 넣 어야 합 니 다.보통 HTTPServer 는 함께 나타 나 며 여러 개 Server 를 포함 할 수 있다. 일반적으로 통용 되 는 명령 을 HTTP 꼭대기 층 에 두 고 비 공용 적 인 것 은 Server 명령 에 넣는다.
    http {
      server {
        listen *:80; #   80  
        server_name ""; #   Host header,      
        root /usr/share/nginx/html; #     .
      }
    }
    

    예 를 들 어 http://127.0.0.1/foo/test.html 의 요청 으로 얻 은 것 은 /usr/share/nginx/html/foo/test.html 입 니 다.
    3.3 Listen 명령
    어떤 포트 를 감청 합 니 다. 예 를 들 어:
    listen 127.0.0.1:8000;
    listen 127.0.0.1;
    listen 8000;
    listen *:8000;
    listen localhost:8000;
    listen [::]:8000; # IPv6
    listen [::1]; # IPv6
    listen *:443 ssl;
    listen 127.0.0.1 default_server accept_filter=dataready backlog=1024;
    

    3.4 Server_name 명령 어
    server 이름, 즉 도 메 인 이름 을 설정 합 니 다. server 명령 아래 에 만 놓 을 수 있 습 니 다. 어댑터 와 정규 로 일치 할 수 있 습 니 다. 기본 값 은 비어 있 습 니 다.
    server {
        server_name example.com www.example.com;
        server_name example.com *.example.com www.example.*; #    
        server_name ~^(www\.)?(.+)$; #   
    }
    
  • 파도 호 ~ 는 뒤쪽 이 정규 임 을 나타 낸다.
  • 여러 도 메 인 이름 이 같은 포트 에 연결 되면 이 걸 로 구분 할 수 있 습 니 다.
  • 3.5 루트 명령
    요청 한 루트 디 렉 터 리 를 설정 합 니 다. 예 를 들 어 설정 은 다음 과 같 습 니 다.
    server {
      listen *:80;
      root /usr/share/nginx/html;
    }
    

    주소 가 http://127.0.0.1/test.html 인 요청 이 오 면 실제로 /usr/share/nginx/html/test.html 여기 로 분 석 됩 니 다.
    가: 그럼 이 요청 http://127.0.0.1/? 이 오 면 어디로 해석 되 나 요?/usr/share/nginx/html 디 렉 터 리 에 있 는 index.html 을 분석 합 니 다. 이것 은 기본 값 입 니 다. index 명령 을 통 해 변경 할 수 있 습 니 다.
    server {
      listen *:80;
      root /usr/share/nginx/html;
      index ADifferentIndexFile.html; # index       html         ,               .
    }
    

    3.6 위치 명령
    이 명령 은 서로 다른 요청 을 설정 할 때 대응 하 는 설정 입 니 다. 예 를 들 어 127.0.0.1/test/hello.html127.0.0.1/formal/hello.html 두 요청 은 이 명령 설정 을 통 해 서로 다른 곳 으로 분 석 됩 니 다.
    location /test/ {
      root /usr/share/nginx/test;
    }
    location /formal/ {
      root /usr/share/nginx/formal;
    }
    

    이 명령 은 더 많은 고급 설정 을 지원 합 니 다. 상세 한 설명 은 다음 과 같 습 니 다.
    이 명령 은 server 또는 location 명령 에 만 있 을 수 있다.
    4. 여러 가상 호스트 설정
    nginx 는 여러 개의 server 모듈 을 설정 하여 서로 다른 사 이 트 를 host 할 수 있 도록 합 니 다. 이것 이 바로 virtual hosting 입 니 다. 예 를 들 어:
    server {
      listen 80;
      server_name example.com;
    }
    server {
      listen 80;
      server_name foobar.com;
    }
    

    상기 에서 우 리 는 두 개의 server 모듈 을 정 의 했 는데 감청 하 는 것 은 모두 80 포트 이 고 도 메 인 이름 은 각각 example.comfoobar.com 이 며 이 두 모듈 은 완전히 독립 된 것 이다.
    우선 이 도 메 인 이름 들 은 컴퓨터 의 IP 에 연결 되 거나, 컴퓨터 의 hosts 를 수 동 으로 수정 하 셔 도 됩 니 다.
    일치 규칙
    여러 개의 server 를 정 한 후에 nginx 는 어떻게 일치 합 니까?
  • IP 주소 와 포트 번호 가 일치 합 니 다. 하나만 일치 하면 이 모듈 로 직접 분석 합 니 다.여러 개 에 맞 는 것 이 있 으 면 두 번 째 단계 로 내 려 갑 니 다.
  • 일치 server_name, 가장 일치 하 는 모듈 로 분석 합 니 다.
  • 어떻게 server_name 일치 하지 않 으 면 기본 모듈 로 분 석 됩 니 다. 기본 값 은 첫 번 째 이 고 명령 으로 기본 모듈 listen 80 default_server; 을 수정 할 수 있 습 니 다.
  • server_name 는 정규 로 정의 할 수 있 기 때문에 구체 적 인 매 칭 은 홈 페이지 에서 볼 수 있 습 니 다.
    5. 시작 관련
    5.1 시작
    CentOS 에서 nginx 의 시작 은 두 가지 방식 이 있 습 니 다.
    sudo nginx #   1
    systemctl start nginx #   2 
    

    nginx 가 시 작 될 때 기본적으로 프로 세 스 가 연 결 됩 니 다: master worker.
    $ ps aux | grep nginx
    root 24484 0.0 0.0 85772 1312 ? Ss 1:38 0:00 nginx: master process
    nobody 24485 0.0 0.0 85992 2004 ? S 1:38 0:00 nginx: worker process
    

    그 중에서 master 는 설정 파일 을 읽 고 불 러 오 며 worker 프로 세 스 를 제어 합 니 다. worker 는 요청 을 진정 으로 처리 합 니 다.
    워 커 프로 세 스 의 수량 에 대해 서 는 worker_processes 명령 을 통 해 설정 할 수 있 습 니 다. 기본 값 은 1 이 고 보통 CPU 의 핵심 수 로 설정 되 어 있 으 며 worker_processes auto 를 통 해 자동 으로 설정 할 수 있 습 니 다.
    1024 이하 포트 를 연결 하려 면 루트 권한 이 필요 합 니 다.
    5.2 프로필 다시 불 러 오기
    nginx 가 실행 되 고 있 지만 nginx. conf 파일 이 수정 되 었 습 니 다. 업데이트 가 필요 합 니 다. 이렇게 할 수 있 습 니 다.
    sudo nginx -s reload
    

    이렇게 하면 닫 고 다시 시작 할 필요 가 없다.
    5.3 탈퇴
    탈퇴 는 이렇게 할 수 있 습 니 다:
    sudo nginx -s quit
    sudu nginx -s stop
    

    Reference
  • NGINX: A Practical Guide to High Performance
  • Alphabetical index of directives
  • 좋은 웹페이지 즐겨찾기