Nginx에 설치 배포 및 사용

[개요]

nginx를 이제 인터넷, 고성능 웹 서버에서 매우 인기가 프록시, 또한 IMAP / POP3 / SMTP 프록시 서버를 역.

로드 밸런싱, 높은 동시성, 다음의 경우에 사용되는 아주 좋은 선택이 대신 아파치의 Nginx를 사용하는대로 지금은 많은 인터넷 응용 프로그램의 nginx를 사용합니다.

[설치]

· 편집 툴과 라이브러리를 설치 ·

냠 ZLIB ZLIB-(STABLE)의 GCC-C ++ libtool을하려면 openssl하려면 openssl-(STABLE)하게 설치 -y

· PCRE를 설치 ·

PCRE의 역할은 Nginx에 재 작성 기능을 지원하는 것입니다.

1. 설치 패키지 PCRE 다운로드

CD / usr / 지방 / SRC /
wget을 http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

2. 추출

타르 zxvf PCRE-8.35.tar.gz

설치 패키지 디렉토리를 입력합니다, 컴파일 및 설치

CD를 PCRE-8.35은
./configure를
만들 && 설치하기

4.보기 버전

PCRE-설정 --version

nginx를 설치 · ·

1. 설치 패키지를 다운로드

CD / usr / 지방 / SRC /
wget을 http://nginx.org/download/nginx-1.6.2.tar.gz

2. 추출

타르 zxvf의 nginx-1.6.2.tar.gz

설치 패키지 디렉토리를 입력합니다, 컴파일 및 설치

CD 용의 nginx-1.6.2
./configure를 --prefix = / usr / 지방 / 웹 서버 / Nginx에 --with-http_stub_status_module --with-http_ssl_module --with-PCRE = / usr / 지방 / SRC / PCRE - 8.35

만들 && 설치하기

4.보기의 nginx 버전

/ usr / 지방 / 웹 서버 / Nginx의 경우 / sbin / nginx를 -v

5. 글로벌 명령은 nginx에 설정되어

CP / usr / 지방 / 웹 서버 / Nginx의 경우 / sbin / nginx를는 / usr / 빈

[구성]

정력 /usr/local/webserver/nginx/conf/nginx.conf

# 일관된 값 및 CPU 코어 수 2를 worker_processes

서버 {

 80 듣고 # 수신 포트

}

[시작]

구성을 수정하면 완료되면 구성을 확인하려면 다음 명령을 사용합니다 :

의 nginx -c /usr/local/webserver/nginx/conf/nginx.conf

nginx를 -t

구성 파일 및 재부팅을로드하려면 다음 명령을 사용합니다 :

의 nginx -s 다시로드

방화벽이 해제되어 확인, 그렇지 않으면 액세스 포트 (80)는 브라우저에서 차단 될 수 있습니다 폐쇄하지 않을 경우 폐쇄 될 필요가있다.

systemctl 상태 firewalld
systemctl 정지 firewalld

다음 페이지를 표시 할 수 브라우저 페이지에서 IP 플러스 포트를 입력하면 설치가 성공적입니다 (몇 분 정도 걸릴 수 있습니다)  

[구성 최적화]

위의 구성 만하고 실행 nginx를 간단하게 얻을, 가장 기본적인 구성입니다, 우리는 여전히 nginx를 리버스 프록시 또는 부하 분산을 달성하기 위해 다음과 같은 구성을 확인해야합니다.

사용자 설정

#user 아무도 없다

작업자 프로세스의 수, 일반적으로 CPU 코어를 설정

1 worker_processes;

PID 파일 (프로세스가 하나인지 확인)

PID는 /run/nginx.pid;

이벤트 {

최대 접속 수, 일반적으로 CPU 설정 * 2,048

 worker_connections 1024;

}

HTTP {

열기 gzip 압축 (전송 속도를 증가) (클라이언트 브라우저와의 nginx 서버를 지원합니다)

에 gzip을;

압축 된 파일의 최소 크기

1K를 gzip_min_lenth;

압축 응용 프로그램 메모리 (16K 데이터 스트림 4)

gzip_buffers 4 16K;

HTTP 프로토콜 버전 (압축을 지원하지 않는 단어에 해당하지 않는)

gzip_http_version 1.1;

클라이언트 브라우저가 지원하지 않는 경우, 압축되지 않습니다

   에 gzip_vary;

로그 형식

log_format 메인

클라이언트 IP 클라이언트 사용자 이름 요청 URL

'$ REMOTE_ADDR - $의 REMOTE_USER [$ time_local] "$ 요청"'

상태 바이트 소스의 페이지 번호를 요청하는 클라이언트에 반환됩니다 (바이 -> 바이 포스트 바)

'$ 상태 $의 body_bytes_sent "$ HTTP_REFERER"'

클라이언트 브라우저 정보 (약 $ REMOTE_ADDR과) 클라이언트 IP 주소

' "$ HTTP_USER_AGENT" "$ HTTP_X_FORWARDED_FOR"';

경로의 형태를 나타내는 로그 오프 위치를 다시 기록 저장되어 있지 않은 기록 로그 메인 대표하여,이어서

오프 ACCESS_LOG

주요 access.log의 ACCESS_LOG 로그 /;

클라이언트 링크 타임 아웃 (긴 연결이있을 때,이 필드는 크게 설정해야합니다)

keepalive_timeout 65;

여러 서버 노드가 기본 서버 이름 캐시 크기가 충분하지 않을 때, 당신은 수동으로 더 큰 설정해야합니다

512 server_names_hash_bucket_size;

가상 서버 호스트가 사이트로 이해 될 수 나타냅니다, 여러 사이트를 구축하기 위해 여러 서버 노드를 구성 할 수 있습니다

각이있는 요청이 서버 _ 이름을 결정하는 서버에서 온다

서버 {

사이트 수신 포트

8800을 듣고;

에 의해 결정이 필드를 사용할 수있는 서버 사이트 액세스 도메인,

서버 _ 로컬 호스트;

왜곡 매개 변수 URL을 피하기 위해 형식을 인코딩

문자셋 UTF-8;

위치는 이동하는 방법으로, 동일한 도메인 이름을 여러 동적 리소스에서 URI를 액세스 규칙과 일치하는, 점프 및 기타 정적 리소스가 일치 규칙 대신에 / 위치 뒤에 따라하는 방법

위치 / {

사이트의 루트 디렉토리는 상대 경로 또는 절대 경로 일 수 있습니다

루트 HTML;

기본 홈 페이지

인덱스 index.html을;

백엔드 사이트 주소 전달은 일반적으로 부드러운 부하를 만드는 데 사용, 백 엔드 서버 설문 조사

proxy_pass http://10.11.12.237:8080;

요청을 거부하고 403을 반환, 일반적으로 특정 디렉토리에 블록 액세스에 사용되는

모든 #deny;

요청 허용

#모두 허용;

요청하는 클라이언트 요청에 호스트 헤더 이름을 추가

proxy_set_header 호스트 $ 호스트;

클라이언트 IP를 요청 헤더

proxy_set_header X-실시간 IP $의 REMOTE_ADDR;

변수 $ REMOTE_ADDR의 값은 클라이언트 후 추가 요청 헤더 "는 X를 위해 전달"콤마로 분리된다. 

클라이언트 요청은 수행하지 않는 경우 "X는-전달-은"헤더 요청, $ proxy_add_x_forwarded_for 변수 값이 같은 변수 $ REMOTE_ADDR 될 것입니다

proxy_set_header X는-전달-를 들어 $ proxy_add_x_forwarded_for;

쿠키 요청 헤더는 클라이언트에 추가

proxy_set_header 쿠키 $ HTTP_COOKIE;

프록시 서버의 응답 헤더 "위치"와 "새로 고침"필드에서 오는 수정합니다.

proxy_redirect [기본 | 오프 | 리디렉션 여분]

당신이 사용하는 경우 "기본"파라미터 설정 위치와 proxy_pass 매개 변수에 따라 결정됩니다.

위치 / 한 / {

  proxy_pass에 http : // 업스트림 : 포트 / 두 /;

  proxy_redirect 기본;

}

위치 / 한 / {

  proxy_pass에 http : // 업스트림 : 포트 / 두 /;

  proxy_redirect에 http : // 업스트림 : 포트 /이 / / 일 /;

}

인수 오프은이 분야에서 모든 proxy_redirect 명령을 비활성화

오프 proxy_redirect;

프록시 서버 위치 필드에 반환됩니다에 http : // localhost를 : 8000 /이 / 어떤 / URI /

위치 필드는 HTTP로 다시 작성 : // 프론트 엔드 / 한 / 일부 / URI /.

proxy_redirect에 http : // localhost를 : 8000 /이 / HTTP : // 프론트 엔드 / 일 /;

이 비 포트 80에서 오는 경우에도, 서버 이름 및 포트베이스를 사용하여

proxy_redirect에 http : // localhost를 : 8000 /이 / /;

도메인 도메인의 일부가 현재 페이지는 쓸 수 없습니다 일치하지 않는 경우 브라우저 쿠키, 쿠키에 많은 제한이 있습니다.

따라서, 도메인 네임 요청 A를하는 경우, B 도메인 이름 서버에 proxy_pass 서버 B가 다음 Domian 쿠키는 B = 출력

프론트 페이지는 여전히 다음 브라우저가 쿠키를 기록 할 수 없습니다,는 A 도메인 이름에 남아 있습니다.

뿐만 아니라 도메인 이름, 브라우저 경로가 제한됩니다.

우리는 종종 브라우저에이 경로에 노출되지 않도록, 대상 서버에 대한 경로에서 proxy_pass.

경로 문제는 쓸 수없는 대상 서버의 쿠키 쿠키 쓰기가 죽었을 경우에 시간이 표시됩니다.

대체 텍스트 속성 헤더에 응답하여 도메인 "쿠키 - 설정"을, 그 값이 문자열 또는 기준 변수 정규식 패턴으로 설정 될 수있다

당신은 백 엔드에 서버가 쿠키 쿠키 도메인을 전달해야하는 경우가 변환 될 필요가있을 것이다, 또는 프런트 엔드 및 백 엔드 도메인 도메인 쿠키 일치 액세스하지 않습니다

구성 규칙.

proxy_cookie_domain serverDomain (백엔드 서버 도메인) nginxDomain (의 nginx 서버 도메인)

proxy_cookie_domain 로컬 호스트 .testcaigou800.com;

Proxy_cookie_domain 지침은 현재의 모든 구성 수준을 취소합니다

오프 proxy_cookie_domain;

백 엔드 서버와의 연결 시간 제한을 설정합니다. (그러나, 일반적으로 어떤 긴 처리 시간이 더 제한 될 수있다) 일반적으로 더 75 초하지

proxy_connect_timeout 30;

}

백 엔드 서버가 표시 404 페이지를 반환

404을 /404.html을 error_page;

그리고 다른 백엔드 서버는 500 오류를 반환 할 때 표시되는 페이지

500 502 503 504 /50x.html을 error_page;

  위치 = {/50x.html

  루트 HTML;

}

}

  필요성은 여러 도메인 이름, 다음과 같은 구성, 다른 포트와 동일한 도메인에 동일한 포트를 듣고 할 때 사용할 수있다 서버 _ 일반 구성

  그러나 너무 수동으로 버퍼 server_names_hash_bucket_size의 크기를 확장 할 필요가 서버에주의

  서버 {

    (80)를 듣고;

    서버 _ bbb.abc.com;

    문자셋 UTF-8;

    위치 / {

      proxy_pass에 http : // localhost를 : 10001;

    }

  }

  서버 {

    (80)를 듣고;

    서버 _ aaa.abc.com;

    문자셋 UTF-8;

    위치 / {

      proxy_pass에 http : // localhost를 : 20002;

    }

  }

}

추천

출처www.linuxidc.com/Linux/2019-08/159991.htm