nginx를 여는 방법. 웹 서버에 액세스하는 데 사용할 수 있는 방법 수를 제한합니다. 오늘의 영웅에 대하여

Nginx 웹 서버는 매우 높은 성능과 사용자의 정적 요청을 빠르게 처리하는 가장 널리 사용되는 웹 서버 중 하나입니다. 적절한 구성을 사용하면 이 웹 서버에서 매우 높은 성능을 얻을 수 있습니다. Nginx는 HTML 페이지나 다른 유형의 리소스 등 정적 파일에 매우 빠르게 대처합니다.

이전 기사 중 하나에서 우리는 이미 주요 매개변수 설정을 살펴보았습니다. 이 기사에서는 전투 상황에서 사용할 웹 서버의 성능과 준비에 대해 더 자세히 설명하고 싶습니다. Linux 배포판의 경우 오늘은 CentOS를 살펴보겠습니다. 이 시스템은 서버에서 자주 사용되며 Nginx 설정에 몇 가지 어려움이 발생할 수 있습니다. 다음으로 Nginx CentOS 설정을 살펴보고 http2, google pagespeed에 대한 전체 지원을 활성화하는 방법과 기본 구성 파일을 구성하는 방법에 대해 이야기하겠습니다.

공식 CentOS 리포지토리에는 Nginx가 포함되어 있으며 시스템에 이미 설치되어 있을 가능성이 높습니다. 그러나 우리는 사이트가 하나의 연결로 모든 데이터를 전송할 수 있는 http2 프로토콜을 사용하여 작동하기를 원하며 이로 인해 성능이 향상됩니다. http2를 통해 작업하려면 SSL 인증서를 구성해야 하지만 이는 Lets Encrypt Nginx 인증서 획득 문서에 이미 기록되어 있습니다. 그러나 그것이 전부는 아닙니다. 일반 SSL에서 HTTP2.0으로 전환하기 위해 이제 대부분의 브라우저는 ALPN 프로토콜을 사용하며 이는 OpenSSL 1.02부터 지원됩니다. 리포지토리에는 OpenSSL 1.01만 있습니다. 따라서 OpenSSL 1.02로 빌드된 Nginx 버전을 설치해야 합니다. 이를 위해 Broken Repo를 사용할 수 있습니다.

sudo yum -y yum-utils 설치
# sudo yum-config-manager --add-repo https://brouken.com/brouken.repo

EPEL 저장소를 사용하는 경우 Nginx를 가져올 필요가 없음을 표시해야 합니다.

sudo yum-config-manager --save --setopt=epel.exclude=nginx*;

이제 올바른 버전의 Nginx를 설치하려면 다음을 입력하십시오.

sudo yum nginx 설치

ALPN을 완벽하게 지원하는 최신 버전의 Nginx 1.13.2가 설치됩니다. 다음으로 설정으로 넘어가겠습니다.

2. Nginx 설정

첫 번째 단계는 구성 파일의 구조를 고려하는 것입니다. 언뜻 보면 여기에 있는 모든 것이 매우 혼란스러워 보일 수 있지만 모든 것이 매우 논리적입니다.

글로벌 옵션
이벤트()
http(
서버(
위치()
}
섬기는 사람()
}

먼저 프로그램의 기본 매개변수(예: 프로그램을 시작할 사용자 및 프로세스 수)를 설정하는 전역 옵션이 있습니다. 다음에는 섹션이 있습니다. 이벤트, Nginx가 들어오는 연결에 응답하는 방법을 설명하고 섹션이 이어집니다. http, http 프로토콜 작동과 관련된 모든 설정을 결합합니다. 섹션이 포함되어 있습니다. 섬기는 사람, 각 섹션은 별도의 도메인을 담당합니다. 서버 섹션에는 섹션이 포함되어 있습니다. 위치, 각각은 특정 요청 URL을 담당합니다. Apache에서처럼 서버의 파일이 아니라 요청 URL에 유의하세요.

/etc/nginx/nginx.conf 파일에서 주요 전역 설정을 지정합니다. 다음으로, 정확히 무엇을 변경할 것인지, 어떤 값을 설정하는 것이 바람직한지 살펴보겠습니다. 전역 옵션부터 시작해 보겠습니다.

  • 사용자- 서버가 실행될 사용자는 사이트 파일이 있는 디렉토리의 소유자여야 하며, php-fpm이 해당 사용자를 대신하여 실행되어야 합니다.
  • 작업자_프로세스- 실행될 Nginx 프로세스 수는 정확히 코어 수만큼 설정되어야 합니다. 예를 들어 저는 4개입니다.
  • 작업자_cpu_affinity- 이 매개변수를 사용하면 각 프로세스를 별도의 프로세서 코어에 할당할 수 있으며 값을 auto로 설정하여 프로그램 자체에서 연결할 항목을 선택할 수 있습니다.
  • 작업자_r한계_nofile- 프로그램이 열 수 있는 최대 파일 수. 각 연결에는 최소한 두 개의 파일이 필요하며 각 프로세스에는 사용자가 지정한 연결 수가 있으므로 공식은 다음과 같습니다. 작업자_프로세스 * 작업자_연결 * 2, 매개변수 작업자 연결아래에서 살펴보겠습니다.
  • pcre_jit- JIT 컴파일을 사용하여 정규식 처리 속도를 높이려면 이 옵션을 활성화합니다.

이벤트 섹션에서는 두 가지 매개변수를 구성해야 합니다.

  • 작업자 연결- 하나의 프로세스에 대한 연결 수는 들어오는 연결을 처리하기에 충분해야 합니다. 먼저, 들어오는 연결이 몇 개인지 알아야 합니다. 이를 위해 서버 ip_address/nginx_status에서 통계를 살펴봅니다. 아래에서 활성화하는 방법을 살펴보겠습니다. 활성 연결 줄에는 서버에 대한 활성 연결 수가 표시되며, php-fpm과의 연결도 계산된다는 점을 고려해야 합니다. 다음으로 허용 및 처리된 필드에 주의하세요. 첫 번째에는 처리된 연결이 표시되고 두 번째에는 허용된 연결 수가 표시됩니다. 값은 동일해야 합니다. 서로 다르다면 연결이 충분하지 않다는 의미입니다. 예를 보세요. 첫 번째 사진이 문제이고 두 번째 사진이 순서입니다. 내 구성에서 최적의 연결 수는 200개입니다(4개 프로세스를 고려하면 총 800개).

  • multi_accept- 프로그램이 동시에 여러 연결을 허용할 수 있도록 하고, 많은 수의 연결로 작업 속도를 높입니다.
  • accept_mutex- 모든 프로세스가 새 연결에 대한 알림을 즉시 수신하도록 이 매개변수의 값을 off로 설정합니다.

또한 이벤트 섹션에서 epoll 지시문을 사용하는 것이 좋습니다. 이는 Linux에서 들어오는 연결을 처리하는 가장 효율적인 방법이지만 이 방법은 기본적으로 사용되므로 수동으로 추가할 필요가 없습니다. http 섹션에서 몇 가지 매개변수를 더 살펴보겠습니다.

  • 전송 파일- sendfile 데이터 전송 방법을 사용하십시오. Linux에 가장 효과적인 방법입니다.
  • tcp_nodelay, tcp_nopush- 요청의 헤더와 본문을 하나의 패킷으로 보내므로 작업 속도가 조금 더 빨라집니다.
  • keepalive_timeout- 클라이언트와의 연결 유지를 위한 시간 초과. 매우 느린 스크립트가 아닌 경우 10초이면 충분합니다. 사용자가 서버에 연결할 수 있도록 필요한 만큼 값을 설정하십시오.
  • Reset_timedout_connection- 시간 초과 후 연결을 끊습니다.
  • open_file_cache- 열린 파일에 대한 캐시 정보. 예를 들어 open_file_cache max=200000 inactive=120s; max - 캐시에 있는 최대 파일 수, 캐싱 시간입니다.
  • open_file_cache_valid- 파일의 관련성을 확인해야 할 때. 예: open_file_cache_valid 120s;
  • open_file_cache_min_uses- 지정된 횟수만큼 열린 파일만 캐시합니다.
  • open_file_cache_errors- 파일 열기 오류를 기억하십시오.
  • if_modified_since- if-modified-since 헤더가 처리되는 방법을 설정합니다. 이 헤더를 사용하면 페이지를 마지막으로 본 이후 변경되지 않은 경우 브라우저는 304 응답을 받을 수 있습니다. 가능한 옵션: 보내지 않음 - 꺼짐, 시간이 정확히 일치하는 경우 보내기 - 정확함, 시간이 정확히 일치하거나 그 이상일 경우 보내기 - 이전;

nginx conf 설정은 다음과 같습니다:

사용자 nginx;
작업자 프로세스 4;
작업자_cpu_affinity 자동;
작업자_r한계_no파일 10000;
pcre_jit 켜짐;

error_log /var/log/nginx/error.log 경고;
load_module "모듈/ngx_pagespeed.so";

이벤트(
multi_accept 켜짐;
accept_mutex 꺼짐;
작업자 연결 1024;
}

파일 보내기;
tcp_nopush 켜기;
tcp_nodelay 켜기;

open_file_cache 최대=200000 비활성=20초;
open_file_cache_valid 120초;
open_file_cache_errors 켜짐;

Reset_timedout_connection 켜기;
client_body_timeout 10;
keepalive_timeout 65;

/etc/nginx/sites-enabled.*.conf 포함

3. http2 설정

서버 설정 섹션에 대해서는 자세히 설명하지 않겠습니다. 왜냐하면 Ubuntu에 Nginx를 설치하는 기사에서 이미 이 작업을 수행했고 여기에 추가할 것이 없기 때문입니다. SSL 설정은 상당히 광범위한 주제이며 별도의 기사에서도 논의할 것입니다. 그러나 http2를 구성하려면 이미 SSL이 있어야 합니다. 다음으로, 서버 섹션에서 Listen 지시어를 조정하세요.

청취 194.67.215.125:443 default_server;

194.67.215.125:443 http2 default_server를 들어보세요;

이전에 올바른 버전의 Nginx가 설치된 경우 이 간단한 방법으로 http2를 활성화할 수 있습니다.

4. PageSpeed ​​설정

Google Pagespeed는 페이지 로드 속도를 높이고, 웹 서버를 보다 효율적으로 실행하며, 사용자가 불편함을 덜 느낄 수 있도록 다양한 최적화를 수행하는 Nginx 모듈입니다. 여기에는 캐싱, HTML 코드 최적화, 이미지 최적화, 자바스크립트와 CSS 코드 결합 등이 포함됩니다. 이 작업은 모두 Nginx 수준에서 수행되므로 PHP에서 수행하는 것보다 더 효율적입니다. 그러나 한 가지 단점이 있습니다. 모듈이 Last Modified 헤더를 제거합니다.

사실 PageSpeed는 모든 파일에 대해 매우 긴 캐시 라인을 설정하고 해당 해시를 파일 이름에 추가합니다. 이렇게 하면 브라우저가 새 해시가 있는 파일만 요청하고 파일이 변경된 경우 사용자가 변경 사항을 볼 수 있도록 LastModified가 제거되므로 리소스 로드 속도가 훨씬 빨라집니다. 이제 모듈을 설치하는 방법을 살펴 보겠습니다. 소스 코드에서 빌드해야 합니다.

먼저 조립용 도구를 설치하는 것이 매우 중요합니다. 설치하지 않으면 오류가 발생하고 무엇을 해야할지 알 수 없습니다.

냠 설치 wget gcc cmake 압축 풀기 gcc-c++ pcre-devel zlib-devel

해당 버전(예: 1.13.3)에 맞는 Nginx 소스를 다운로드하고 추출합니다.

wget -c https://nginx.org/download/nginx-1.13.3.tar.gz
# tar -xzvf nginx-1.13.3.tar.gz

nginx 서버 설정에는 저장소에서 프로그램을 재조립하고 교체하는 작업이 포함되지 않습니다. 우리는 단순히 이러한 소스를 사용하여 모듈을 빌드합니다. PageSpeed ​​소스 다운로드 및 추출:

wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
# v1.12.34.2-stable.zip 압축 해제

PageSpeed ​​​​최적화 라이브러리를 다운로드하여 모듈 소스가 있는 폴더에 압축을 풉니다.

CD ngx_pagespeed-1.12.34.2-안정/
# wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
# tar -xvzf 1.12.34.2-x64.tar.gz

OpenSSL 1.02 소스를 다운로드하고 압축을 풉니다.

wget -c https://www.openssl.org/source/openssl-1.0.2k.tar.gz -O /opt/lib/$OPENSSL.tar.gz
# tar xvpzf openssl-1.0.2k.tar.gz

이제 모듈을 조립해야 합니다. 먼저, 현재 Nginx가 빌드되는 옵션을 살펴보세요.

이제 Nginx가 있는 폴더로 이동하여 수신된 모든 옵션, PageSpeed, OpenSSL의 --add-dynamic-module 옵션을 대체하고 빌드해 보겠습니다.

CD nginx-1.13.3
# ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx .conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx .pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache /nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path= /var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt="- O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fExceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic" --with- ld-opt= --with-openssl=$HOME/openssl-1.0.2k --add-dynamic-module=$HOME/ngx_pagespeed-1.12.34.2-stable $(PS_NGX_EXTRA_FLAGS)
#만들다

모든 작업이 올바르게 완료되면 출력 시 obj 폴더에 ngx_pagespeed.so 모듈이 표시됩니다. 이를 /etc/nginx/modules 폴더에 복사해야 합니다.

cp ngx_pagespeed.so /etc/nginx/modules/ngx_pagespeed.so

캐시용 폴더를 만듭니다.

mkdir -p /var/ngx_pagespeed_cache
# chown -R nginx:nginx /var/ngx_pagespeed_cache

이제 /etc/nginx/nginx.conf에서 모듈을 활성화하려면 다음 줄을 추가하세요.

load_module "모듈/ngx_pagespeed.so";

서버의 안정적이고 빠른 운영에 사이트의 성패가 달려있습니다. 느린 작동과 빈번한 충돌로 인해 방문자와 검색 엔진 모두가 겁을 먹을 수 있습니다. 후자는 또한 검색 결과에서 속도가 느려지는 사이트의 등급을 낮추며 상위 10위 안에 들지는 않지만 모든 검색어에 대해 상위 100위 안에 들게 됩니다.

nginx와 php-fpm의 조합을 사용하여 웹사이트를 제공하면 작업 속도는 물론 시스템 전체의 안정성도 높일 수 있습니다. 또한, 아파치 사용을 포기함으로써 시스템을 다소 단순화하고 보호까지 하고 있습니다. 결국 Apache가 없으면 공격자는 예를 들어 .htaccess 파일을 자신의 목적으로 사용할 수 없습니다.

nginx+php-fpm 조합은 구성하기가 매우 쉽고 널리 사용되는 많은 CMS(WordPress, MODX, DLE 및 다양한 프레임워크)에서 지원됩니다. 이 모든 것은 부피가 큰 Apache 없이도 작동할 수 있습니다.

웹 서버를 설치할 때 사용자를 생성하지 않고는 할 수 없습니다. 이상적으로는 각 사이트마다 별도의 사용자를 만들어야 합니다. 이렇게 하면 사용자 중 한 명이 해킹을 당하더라도 다른 사이트를 보호할 수 있습니다. 이 문서의 예제는 를 사용하여 사용자를 생성했다는 사실을 고려하여 작성되었습니다.

먼저 기본 모듈인 php-fpm, mysql, 컬, GD를 설치해 보겠습니다. 그 밖의 모든 것은 개인의 필요에 달려 있습니다.

# 적성 설치 nginx php5-fpm php5-mysqlnd php5-curl php5-gd

구성 파일은 디렉터리에 있습니다. /etc/php5/fpm/.

처음에 php-fpm에는 www라는 풀이 하나만 있습니다. 우리는 이를 다른 풀의 기초로 사용할 것입니다.

구성 파일을 열어보자 /etc/php5/fpm/pool.d/www.conf, 몇 가지 변수를 살펴보고 그에 대한 값을 선택해 보겠습니다.

첫 번째 변수는 풀 이름입니다. 이는 대괄호로 묶여 있으며 시스템에 존재하는 사용자의 이름과 일치할 수 없습니다.

사용자 = 사용자 이름 그룹 = www-data

풀이 Unix 소켓으로 작동해야 함을 나타냅니다. 변하기 쉬운 $풀이름으로 대체됩니다.

듣기 = /var/run/php-$pool.sock

fpm 시작 중에 특정 수의 풀 프로세스가 생성되는 정적 모드의 사용을 정의합니다. 들어오는 모든 요청을 처리합니다.

왜 이런 특별한 선택을 하게 되었나요? :) 이것이 가장 경제적 인 옵션입니다. 각 풀 프로세스는 변수에 할당된 RAM 양을 차지합니다. 메모리 제한연결된 모듈, 캐시 등을 위한 수 메가바이트. 정적 옵션을 사용하면 모든 요청은 생성된 프로세스에 의해서만 처리되며 새 요청은 생성되지 않습니다(그리고 귀중한 메모리를 차지하지 않습니다). 결과적으로 우리는 고정된 메모리 소비를 얻습니다.

요청을 처리하는 데 필요한 프로세스 수를 나타냅니다. 작업량에 따라 선택됩니다.

pm.max_children = 3

임시 파일을 저장하기 위한 디렉터리:

Php_admin_value = "/var/www/사용자 이름/tmp" !}

세션 파일을 저장하는 디렉터리:

Php_admin_value = "/var/www/사용자 이름/세션" !}

보안상의 이유로 php-fpm 풀을 실행하는 권한을 가진 사용자만이 이 디렉토리에 접근할 수 있어야 합니다. 또한 세션 파일과 임시 파일을 모두 저장하는 데 동일한 디렉터리를 사용해서는 안 됩니다.

스크립트 실행을 위한 메모리 제한은 사이트 요구 사항에 따라 선택해야 합니다. 시작한다:

Php_admin_value = 50M

취약점을 해결하는 필수 매개변수를 지정합니다.

Php_admin_value = 0

변수 sendmail_path그리고 open_basedir특별히 표시되어 있지 않습니다. 이는 nginx 구성 파일에서 fast-cgi 매개변수로 전달됩니다. 따라서 각 특정 사이트에 대해 자신만의 설정을 정의할 수 있습니다. :)

필요한 모든 매개변수를 지정한 후 다음 명령을 사용하여 php-fpm 구성을 다시 로드해야 합니다.

# 서비스 php5-fpm 다시 로드

nginx를 사용하여 PHP 스크립트 처리

남은 것은 php-fpm과 작동하도록 nginx를 구성하는 것뿐입니다. 준비 구성

서버(서버_이름 example.com; 들어라 80; access_log /var/log/nginx/ example.com.access.log; error_log /var/log/nginx/ example.com.오류 기록; 문자셋 utf-8; 색인 index.php; 루트 /var/www 위치 / ( try_files $uri $uri/ /index.php$args; ) 위치 ~ \.php$ ( try_files $uri =404; fastcgi_pass unix:/run/php-www.sock; fastcgi_index 인덱스. php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PHP_VALUE "sendmail_path=/usr/sbin/sendmail -t -i[이메일 보호됨]"; } } !}

example.com"; fastcgi_param PHP_ADMIN_VALUE "open_basedir=/var/www/example.com/:/var/save_path/:/var/tmp_dir/

귀하의 도메인으로 교체하세요.:

매개변수 설명 try_files $uri =404; 메시지 대신 사용자 브라우저에 404 오류가 표시됩니다.어떤 입력 파일을 지정하지

, 이 오류가 발생한 경우.

fastcgi_pass — php-fpm 소켓 경로입니다.

Fastcgi_pass 유닉스:/run/php-www.sock; 문자셋 utf-8; 색인 index.php; 루트 /var/www 위치 / ( try_files $uri $uri/ /index.php$args; ) 위치 ~ \.php$ ( try_files $uri =404; fastcgi_pass unix:/run/php-www.sock; fastcgi_index 인덱스. php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PHP_VALUE "sendmail_path=/usr/sbin/sendmail -t -i 다음 변수는 sendmail의 경로와 사이트 관리자의 이메일 주소를 나타내는 매개변수를 설정합니다. 바꾸다

당신 자신의 무언가를 위해. 문자셋 utf-8; 색인 index.php; 루트 /var/www 위치 / ( try_files $uri $uri/ /index.php$args; ) 위치 ~ \.php$ ( try_files $uri =404; fastcgi_pass unix:/run/php-www.sock; fastcgi_index 인덱스. php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PHP_VALUE "sendmail_path=/usr/sbin/sendmail -t -i";

Fastcgi_param PHP_VALUE "sendmail_path=/usr/sbin/sendmail -t -i

open_basedir의 디렉터리를 나열합니다. 즉, 사이트가 있는 디렉터리, 임시 파일을 저장하는 디렉터리, 세션 파일 디렉터리입니다."; !}

Fastcgi_param PHP_ADMIN_VALUE "open_basedir=/var/www/example.com/:/var/save_path/:/var/tmp_dir/

여러 매개변수를 전달해야 하는 경우 다음과 같이 수행해야 합니다. 문자셋 utf-8; 색인 index.php; 루트 /var/www 위치 / ( try_files $uri $uri/ /index.php$args; ) 위치 ~ \.php$ ( try_files $uri =404; fastcgi_pass unix:/run/php-www.sock; fastcgi_index 인덱스. php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PHP_VALUE "sendmail_path=/usr/sbin/sendmail -t -i\nopen_basedir=/var/www/example.com/:/var/save_path/:/var/tmp_dir/";

보시다시피 매개변수는 줄 바꿈을 사용하여 구분됩니다. \N.

모든 변경 사항을 저장하고 nginx를 다시 시작하십시오.

# 서비스 nginx 다시 로드

접촉 중

|

Nginx는 세계에서 가장 인기 있는 웹 서버 중 하나이므로 트래픽이 많은 대규모 웹사이트를 호스팅할 수 있습니다. Apache보다 적은 리소스를 사용하는 경향이 있습니다. 역방향 프록시로도 사용할 수 있습니다.

이 가이드는 Ubuntu 16.04 서버에 Nginx를 설치하는 데 도움이 됩니다.

요구사항

  • 우분투 16.04 서버.
  • sudo 명령에 대한 액세스 권한이 있는 루트가 아닌 사용자(자세한 내용은 참조)

1: Nginx 설치

Nginx 패키지는 표준 Ubuntu 시스템 저장소에서 사용할 수 있습니다.

이는 현재 세션에서 적절한 패키징 시스템과의 첫 번째 상호작용이므로 패키지 인덱스를 업데이트해야 합니다. 그런 다음 Nginx를 설치할 수 있습니다.

sudo apt-get 업데이트
sudo apt-get nginx 설치

그런 다음 패키지 관리자는 웹 서버와 모든 종속성을 설치합니다.

2: 방화벽 설정

Nginx를 시작하기 전에 Nginx 트래픽을 지원하도록 방화벽을 구성해야 합니다. 설치 중에 Nginx는 ufw에 서비스로 등록되므로 웹 서버 트래픽을 허용하는 것은 매우 간단합니다.

ufw 애플리케이션 설정 목록을 엽니다.

sudo ufw 앱 목록

명령은 다음을 반환합니다.

사용 가능한 애플리케이션:
Nginx 전체
엔진엑스 HTTP
엔진엑스 HTTPS
오픈SSH

보시다시피 목록에는 세 개의 Nginx 프로필이 있습니다.

  • Nginx Full: 이 프로필은 포트 80(암호화되지 않은 네트워크 트래픽) 및 443(TLS/SSL 암호화된 트래픽)을 엽니다.
  • Nginx HTTP: 포트 80의 암호화되지 않은 HTTP 트래픽에 대한 프로필입니다.
  • Nginx HTTPS: 포트 443의 TLS/SSL 암호화 트래픽에 대한 프로필입니다.

프로필을 활성화하려면 다음을 입력하십시오.

sudo ufw는 "Nginx HTTP"를 허용합니다.

프로필이 활성화되어 있는지 확인하십시오.

이 명령은 HTTP 트래픽이 허용됨을 보고해야 합니다.

상태: 활성
작업 시작:
-- ------ ----
OpenSSH는 어디서나 허용
Nginx HTTP는 어디서나 허용
OpenSSH(v6) 어디서나 허용(v6)
Nginx HTTP(v6) 어디서나 허용(v6)

3: 웹 서버 테스트

설치 후 Ubuntu 16.04는 Nginx를 자동으로 시작합니다. 이 시점에서 웹 서버가 실행 중이어야 합니다.

Nginx가 실행 중인지 확인하려면 systemd init 시스템에서 해당 상태를 쿼리하세요.

systemctl 상태 nginx
nginx.service - 고성능 웹 서버 및 역방향 프록시 서버
로드됨: 로드됨(/lib/systemd/system/nginx.service; 활성화됨; 공급업체 사전 설정: 활성화됨)
활성: 2016년 4월 18일 월요일 16:14:00 EDT 이후 활성(실행 중)입니다. 4분 2초 전
메인 PID: 12857(nginx)
C그룹: /system.slice/nginx.service
├─12857 nginx: 마스터 프로세스 /usr/sbin/nginx -g daemon on; master_process 켜짐
└─12858 nginx: 작업자 프로세스

보시다시피 서비스가 성공적으로 시작되었습니다.

표준 Nginx 랜딩 페이지를 방문해 볼 수도 있습니다. 도메인 이름이나 IP 주소를 통해 브라우저에서 액세스할 수 있습니다.

IP 주소를 모르는 경우 명령줄을 사용하여 찾을 수 있습니다. 입력하다:

IP 주소 표시 eth0 | grep inet | awk "( $2 인쇄; )" | sed "s/\/.*$//"

이 명령은 여러 줄을 반환합니다. 브라우저에서 각 주소를 확인하세요.

또한 네트워크의 다른 지점에서 귀하의 IP 주소를 어떻게 보는지 알아볼 수도 있습니다.

sudo apt-get 설치 컬
컬 -4 icanhazip.com

IP를 알고 나면 브라우저에 입력하여 웹 서버가 제대로 작동하는지 확인하세요.

http://서버_도메인_또는_IP

표준 Nginx 랜딩 페이지가 화면에 나타나야 합니다.

nginx에 오신 것을 환영합니다!
이 페이지가 보이면 nginx 웹 서버가 성공적으로 설치되어 작동하고 있는 것입니다. 추가 구성이 필요합니다.

4: Nginx 프로세스 관리

웹 서버를 관리하기 위한 몇 가지 기본 프로그램을 살펴보겠습니다.

Nginx를 중지하려면 다음을 입력하세요.

sudo systemctl nginx 중지

실행하려면 다음을 입력하세요.

sudo systemctl nginx 시작

다시 시작하려면 다음 명령을 사용하십시오.

sudo systemctl nginx 다시 시작

연결을 재설정하지 않고 Nginx 설정을 업데이트하려면 다음 명령을 입력하십시오.

sudo systemctl reload nginx

기본적으로 Nginx는 서버가 부팅될 때 자동으로 시작됩니다. 이 동작은 비활성화할 수 있습니다:

sudo systemctl nginx 비활성화

서비스 자동 시작을 재개하려면 다음을 입력하십시오.

sudo systemctl nginx 활성화

5: Nginx 파일 및 디렉터리

이제 서비스를 관리하는 방법을 알았습니다. 이제 중요한 Nginx 파일과 디렉터리에 익숙해질 시간입니다.

콘텐츠

  • /var/www/htm: 이 디렉토리에는 현재 사이트 콘텐츠가 포함되어 있습니다. 기본적으로 이미 본 표준 랜딩 페이지만 포함되어 있습니다. 이 디렉터리는 Nginx 구성 파일에서 변경할 수 있습니다.

서버 설정

  • /etc/nginx: 모든 구성 파일이 저장되는 nginx 설정 디렉터리입니다.
  • /etc/nginx/nginx.conf: 전역 웹 서버 설정이 포함된 Nginx 기본 구성 파일입니다.
  • /etc/nginx/sites-available: 각 개별 사이트에 대해 구성된 서버 블록(가상 호스트)을 저장하는 디렉터리입니다. Nginx는 해당 블록에 대한 링크가 사이트 활성화 디렉터리에 나타날 때까지 이러한 블록을 사용하지 않습니다(나중에 설명). 일반적으로 이 디렉터리는 가상 호스트를 구성하는 데 사용됩니다.
  • /etc/nginx/sites-enabled/: 활성화된 서버 블록을 저장하는 디렉터리입니다. 블록을 활성화하려면 sites-available 디렉터리에 저장된 파일에 대한 심볼릭 링크를 만들어야 합니다.
  • /etc/nginx/snippets: 이 디렉터리는 Nginx 구성에 포함될 수 있는 구성 조각을 저장합니다. 일반적으로 잠재적으로 반복 가능한 구성 세그먼트는 조각으로 추가됩니다.

로그

  • /var/log/nginx/access.log: 이 로그는 Nginx 웹 서버에서 수신한 모든 요청을 기록합니다(별도로 구성되지 않은 경우).
  • /var/log/nginx/error.log: 이 로그는 모든 Nginx 오류 메시지를 저장합니다.

결론

이제 Nginx 웹 서버가 설치되었으며 사용할 준비가 되었습니다. 이를 사용하여 사이트 콘텐츠를 제공하세요.

Nginx는 세계에서 가장 인기 있는 웹 서버 중 하나이며 인터넷에서 가장 크고 가장 바쁜 사이트를 호스팅하는 데 사용됩니다. Nginx는 Apache보다 리소스 집약도가 훨씬 낮습니다. 웹 서버와 역방향 프록시로 모두 사용할 수 있습니다.

이 기사에서는 Ubuntu 16.04 서버에 Nginx를 설치하는 과정을 안내합니다.

설치 전

이 문서의 단계를 수행하기 전에 sudo 권한이 있는 루트가 아닌 일반 사용자인지 확인하세요. 서버에서 이러한 사용자를 설정하는 방법은 다음에서 확인할 수 있습니다.

해당 사용자를 생성한 후 해당 사용자 이름과 비밀번호를 사용하여 서버에 로그인하십시오. 이제 이 문서에 설명된 단계를 수행할 준비가 되었습니다.

1단계: Nginx 웹 서버 설치

Nginx는 표준 Ubuntu 리포지토리에서 사용할 수 있으므로 설치가 매우 간단합니다.

이번 세션에서는 처음으로 apt를 사용할 예정이므로 로컬 패키지 목록을 업데이트하는 것부터 시작하겠습니다. 다음으로 서버를 설치합니다.

  • sudo apt-get 업데이트
  • sudo apt-get nginx 설치

이러한 명령을 실행하면 apt-get은 서버에서 작동하는 데 필요한 Nginx 및 기타 패키지를 설치합니다.

2단계: 방화벽 설정

Nginx 테스트를 시작하기 전에 서비스에 대한 액세스를 허용하도록 방화벽을 구성해야 합니다. 설치 중에 Nginx는 ufw 방화벽 서비스에 등록됩니다. 따라서 액세스 설정은 매우 간단합니다.

ufw에 등록된 애플리케이션에 대한 액세스 설정을 표시하려면 다음 명령을 입력하십시오.

  • sudo ufw 앱 목록

이 명령을 실행하면 애플리케이션 프로필 목록이 표시됩니다.

사용 가능한 애플리케이션: Nginx 전체 Nginx HTTP Nginx HTTPS OpenSSH

이 출력에서 ​​볼 수 있듯이 Nginx에는 세 가지 프로필이 구성되어 있습니다.

  • Nginx 전체: 이 프로필은 포트 80(암호화되지 않은 일반 웹 트래픽) 및 443(TLS/SSL을 사용하여 암호화된 트래픽)을 엽니다.
  • 엔진엑스 HTTP: 이 프로필은 포트 80(암호화되지 않은 일반 웹 트래픽)만 엽니다.
  • 엔진엑스 HTTPS: 이 프로필은 포트 443만 엽니다(트래픽은 TLS/SSL을 사용하여 암호화됨).

명시적으로 허용하려는 트래픽만 허용하도록 ufw를 구성하는 것이 좋습니다. 아직 서버에 SSL을 구성하지 않았으므로 이 문서에서는 포트 80에서만 트래픽을 허용합니다.

다음 명령을 사용하여 이 작업을 수행할 수 있습니다.

  • sudo ufw는 "Nginx HTTP"를 허용합니다.

다음 명령을 입력하여 변경 사항을 확인할 수 있습니다.

  • sudo ufw 상태

결과는 다음과 유사하게 출력되어야 합니다.

상태: 활성 작업 시작 -- ------ ---- OpenSSH 어디에서나 허용 Nginx HTTP 어디에서나 허용 OpenSSH(v6) 어디에서나 허용(v6) Nginx HTTP(v6) 어디에서나 허용(v6)

3단계: 웹 서버 확인

설치 프로세스가 완료되면 Ubuntu 16.04는 Nginx를 자동으로 시작합니다. 따라서 웹 서버가 이미 실행 중이어야 합니다.

다음 명령을 실행하여 이를 확인할 수 있습니다.

  • systemctl 상태 nginx
● nginx.service - 고성능 웹 서버 및 역방향 프록시 서버 로드됨: 로드됨(/lib/systemd/system/nginx.service; 활성화됨, 벤더 사전 설정: 활성화됨) 활성: 2016년 4월 18일 월요일부터 활성(실행 중) 16:14:00 EDT; 4분 2초 전 메인 PID: 12857 (nginx) CGroup: /system.slice/nginx.service ├─12857 nginx: 마스터 프로세스 /usr/sbin/nginx -g daemon on; └─12858 nginx의 master_process: 작업자 프로세스

위 출력에서 ​​볼 수 있듯이 서비스가 실행되고 있습니다. 하지만 웹페이지를 요청하여 완전히 작동하는지 확인해 보겠습니다.

이를 위해 도메인 이름이나 서버 IP 주소를 입력할 때 기본적으로 사용할 수 있는 Nginx 웹 페이지가 표시되는지 확인할 수 있습니다.

서버의 도메인 이름을 구성하지 않으려면 서버의 공용 IP 주소를 사용할 수 있습니다. 서버의 공용 IP 주소를 모르는 경우 다음 명령을 사용하여 이 IP 주소를 찾을 수 있습니다.

  • IP 주소 표시 eth0 | grep inet | awk "( $2 인쇄; )" | sed "s/\/.*$//"

결과적으로 여러 IP 주소가 표시됩니다. 브라우저에 각각 붙여넣어 보세요.

IP 주소를 확인하는 또 다른 방법은 서버가 인터넷에서 어떻게 표시되는지 확인하는 것입니다.

  • sudo apt-get 설치 컬
  • 컬 -4 icanhazip.com

수신된 IP 주소 또는 도메인 이름을 웹 브라우저에 입력하세요. 기본 Nginx 페이지가 표시됩니다.

http:// domain_name_or_IP_address

브라우저에 이와 같은 페이지가 표시되면 Nginx가 성공적으로 설치된 것입니다.

4단계: Nginx 프로세스 관리

이제 Nginx가 설치되었고 작동한다고 확신하므로 웹 서버 관리를 위한 몇 가지 기본 명령을 살펴보겠습니다.

웹 서버를 중지하려면 다음 명령을 사용하십시오.

  • sudo systemctl nginx 중지

중지된 웹 서버를 시작하려면 다음을 입력하십시오.

  • sudo systemctl nginx 시작

다음 명령을 사용하여 웹 서버를 다시 시작할 수 있습니다.

  • sudo systemctl nginx 다시 시작

Nginx 구성을 변경하면 연결을 닫지 않고도 다시 시작할 수 있는 경우가 많습니다. 이렇게 하려면 다음 명령을 사용할 수 있습니다.

  • sudo systemctl reload nginx

기본적으로 Nginx는 서버가 시작될 때 자동으로 시작되도록 구성됩니다. 이 웹 서버 동작이 필요하지 않은 경우 다음 명령을 사용하여 비활성화할 수 있습니다.

  • sudo systemctl nginx 비활성화

서버가 시작될 때 Nginx를 다시 활성화하려면 다음을 입력하십시오.

  • sudo systemctl nginx 활성화

5단계: 중요한 Nginx 파일 및 디렉터리

이제 웹 서버 관리를 위한 기본 명령을 알았으니 주요 디렉터리와 파일을 살펴보겠습니다.

콘텐츠

  • /var/www/html: 기본적으로 앞서 본 Nginx 테스트 페이지로만 구성된 웹 콘텐츠는 /var/www/html 디렉터리에 있습니다. 이 디렉터리의 경로는 Nginx 구성 파일에서 구성할 수 있습니다.

서버 구성

  • /etc/nginx: Nginx 구성 디렉터리. 모든 Nginx 구성 파일은 이 디렉터리에 있습니다.
  • /etc/nginx/nginx.conf: Nginx 기본 구성 파일. 이 파일은 전역 Nginx 구성을 변경하는 데 사용됩니다.
  • /etc/nginx/sites-available: 각 사이트에 대해 "서버 블록"이 저장되는 디렉터리입니다(서버 블록은 대략 Apache의 가상 호스트와 동일합니다). Nginx는 사이트 활성화 디렉터리에 해당 링크가 없으면 이 디렉터리의 구성 파일을 사용하지 않습니다(아래 참조). 일반적으로 모든 서버 차단 설정은 이 디렉토리에서 이루어지며, 이후 다른 디렉토리에 링크를 생성하여 사이트를 활성화합니다.
  • /etc/nginx/sites-enabled/ : 이 디렉토리는 활성화된 사이트에 대한 서버 블록을 저장합니다. 이는 일반적으로 사이트 사용 가능 디렉터리에 있는 사이트 구성 프로필에 대한 링크를 생성하여 수행됩니다.
  • /etc/nginx/snippets: 이 디렉터리에는 모든 사이트를 구성하는 데 사용할 수 있는 구성 조각이 저장됩니다. 여러 구성 파일에서 잠재적으로 사용될 수 있는 구성 조각은 이러한 조각을 생성하는 데 탁월한 후보입니다.

서버 로그

  • /var/log/nginx/access.log: Nginx 설정에서 달리 지정하지 않는 한 웹 서버에 대한 모든 요청이 이 로그 파일에 기록됩니다.
  • /var/log/nginx/error.log: 모든 Nginx 오류가 이 파일에 기록됩니다.

결론

이제 웹 서버를 설치하고 구성했으므로 사용자에게 제공할 콘텐츠와 웹 서버 외에 사용할 수 있는 다른 기술을 선택할 수 있습니다.

PHP로 작성된 웹사이트를 실행하기 위한 일반적인 조합은 apache + mod_php입니다. mod_php에는 기본적으로 prefork_mpm이 필요하므로 Apache는 각 개별 연결을 처리하기 위해 별도의 프로세스를 생성하므로 RAM 소비 측면에서 그다지 경제적이지 않습니다.

그러다가 그가 나타났다 nginx- 가벼운 프록시 웹 서버이며 정적 데이터를 발행하고 사소한 일로 아파치를 괴롭히지 않도록 아파치 앞에 설치하기 시작했습니다. 다음 논리적 단계는 nginx - apache - php 체인에서 apache 사용자의 중개자를 연결 해제하는 것입니다. 이것이 우리가 할 작업입니다.

PHP-FPM FastCGI도 할 수 있는 프로세스 실행 비용(CGI가 겪는 문제)을 피하기 위해 PHP를 악마화할 수 있습니다. 하지만 php-fpm은 다른 유용한 기능도 제공합니다:

  • 지정된 사용자를 대신하여 핸들러 풀 실행
  • 실행 중인 핸들러 수의 동적 제어,
  • 핸들러에 문제가 있는 경우 핸들러를 다시 시작하는 기능
  • mysql과 유사한 느린 쿼리 로깅,
  • 상태 및 핑 페이지,
  • 다른.

데비안에 php-fpm을 설치하는 것은 매우 간단합니다:

적성 설치 php5-fpm

그런 다음 자체적으로 잘 문서화되어 있는 두 개의 구성 파일을 편집할 수 있지만 단어 수가 너무 많아 그 뒤에 숨은 본질을 찾기 어려울 수도 있습니다. 첫 번째 항목(/etc/php5/fpm/php-fpm.conf)을 사용하면 일반 설정을 지정할 수 있습니다.

포함하다- 추가 구성을 포함할 디렉터리,
PID- 프로세스 식별자가 있는 파일의 경로,
오류 기록- 오류 로그 경로
syslog.facility- 기록할 로그를 지정할 수 있습니다.
syslog.ident- 시스템 로그에 항목을 표시할 이름,
로그 레벨- 경고부터 디버그까지의 로그 수준,

예를 들어, 디버깅이 필요하지 않은 경우 원칙적으로 위의 매개변수는 기본적으로 그대로 둘 수 있습니다. 더욱 흥미로운 매개변수:

비상_재시작_임계값- 지정된 시간 내에 SIGSEGV 또는 SIGBUS 신호를 사용하여 프로세스 출발 횟수를 지정하고 php-fpm을 부드럽게 다시 시작해야 합니다.
비상_재시작_간격- 특정 기간.
process_control_timeout- 자손이 마스터가 신호에 응답할 때까지 얼마나 오래 기다려야 하는지,
프로세스.맥스- 모든 풀의 최대 프로세스 수
프로세스.우선순위- 마스터 프로세스의 우선순위를 지정할 수 있습니다.
악마화하다- 악마화할지 말지. 디버깅에 유용할 수 있습니다.
rlimit_files- 마스터 프로세스에 사용 가능한 파일 설명자 수,
rlimit_core- 몰랐어
이벤트.메커니즘- 리눅스에서는 확실히 epoll입니다.
systemd_interval- OS가 systemd를 사용하는 경우 프로세스 상태에 대한 보고 빈도를 설정할 수 있습니다. 데비안 8과 관련이 있습니다.

두 번째 구성은 풀 구성을 위한 기본 구성이며 /etc/php5/fpm/pool.d/www.conf에 있습니다. 이 파일에서는 더 많은 매개변수를 설정할 수 있으며 모든 내용이 잘 문서화되어 있습니다. 이 파일을 삭제하거나 이름을 바꾸고 자체 구성 파일을 만듭니다.

흥미롭게도 풀 구성에서 풀 이름을 변수로 사용할 수 있습니다. $풀. 이로 인해 통합 구성 파일을 생성하여 새 풀의 기초로 사용할 수 있습니다. 풀 이름은 대괄호 안에 지정되며 앞에는 매개변수 블록이 옵니다. 실제로 모든 풀을 하나의 파일에 기술할 수 있지만 이렇게 하면 안되는 것 같습니다. 예시 구성 파일:


접두사 = /var/www/$pool

사용자 = $pool
그룹 = $풀

듣기 = /var/run/phpfpm-$pool.sock
Listen.owner = $pool
Listen.group = www-데이터
청취.모드 = 0660

오후 = 동적
pm.max_children = 16
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4

pm.status_path = /fpmstat

request_slowlog_timeout = 3초
느린 로그 = /var/www/logs/$pool.slow.log

필요하다면:

access.log = /var/www/logs/$pool.access.log

매개변수를 살펴보겠습니다.

접두사- 매개변수 Slowlog, Listen, chroot, chdir, php_values, php_admin_values에서 사용할 수 있는 기본 경로를 설정할 수 있습니다.
사용자그리고 그룹- 시작할 프로세스의 소유자와 그룹을 지정합니다.
듣다- 수신 대기할 소켓을 나타냅니다. UNIX 및 TCP 소켓이 모두 지원됩니다. 웹 서버와 PHP 핸들러가 동일한 서버에 있는 경우 UNIX 소켓을 사용하는 것이 더 좋습니다. 이는 패킷 생성과 관련된 오버헤드가 없기 때문에 잠재적으로 더 빠르기 때문입니다.
청취.소유자, 청취.그룹, 청취.모드- 소켓 액세스 매개변수를 설정할 수 있습니다. 풀 이름과 일치하는 이름이 소유자로 지정됩니다. 공유 호스팅이 없는 경우 적절한 사용자를 생성하고 해당 사용자에 대한 SSH 액세스 권한이 없는지 확인해야 합니다. 그룹은 nginx가 그 아래에서 실행되고 소켓 파일에 대한 액세스를 제공해야 하기 때문에 www-data로 지정됩니다. 권리 660을 통해 귀하는 다른 사람의 접근을 차단할 수 있습니다.
오후- 프로세스 관리자가 하위 프로세스 수를 관리하는 방법을 지정합니다. 이는 정적(일정한 프로세스 수), 동적(프로세스 수는 지정된 제한 내에서 달라질 수 있음) 및 요청 시(시간 초과 후 프로세스가 시작되고 종료되는 경우)일 수 있습니다.
pm.max_children- 최대 자식 프로세스 수.
pm.start_servers- php-fpm이 시작될 때 얼마나 많은 프로세스가 시작됩니까?
pm.min_spare_servers- 대기 프로세스의 최소 수. 매개변수 값보다 프로세스 수가 적으면 새 프로세스가 생성됩니다.
pm.max_spare_servers- 최대 대기 프로세스 수. 매개변수 값보다 대기 중인 프로세스가 더 많으면 추가 프로세스가 종료됩니다.
pm.status_path- 상태 페이지의 경로입니다.
request_slowlog_timeout- 이후 요청이 느린 것으로 간주되는 시간입니다.
느린 로그- 느린 요청 로그 파일의 경로입니다.
접속.로그- 액세스 로그가 있는 파일의 경로입니다.

다른 흥미로운 옵션:

pm.max_requests- 프로세스를 다시 시작해야 하는 처리된 요청 수입니다. 메모리 누수를 방지할 수 있습니다.
프로세스.우선순위- 이 풀에 있는 프로세스의 우선순위를 설정합니다.
chroot- 지정된 디렉터리에 프로세스를 연결할 수 있습니다. 그러나 PHP에서 사용하는 모든 경로는 지정된 디렉터리를 기준으로 작동하므로 추가 구성이 필요합니다.
security.limit_extensions- php-fpm으로 처리할 파일 확장자 목록을 지정할 수 있습니다.

다음과 같이 환경 변수를 재정의할 수도 있습니다.

.htaccess에서와 마찬가지로 php.ini의 매개변수를 재정의합니다.

php_flag = 꺼짐

즉, 각 풀에 대해 개별적으로 많은 PHP 매개변수를 구성할 수 있습니다.

그건 그렇고, PHP를 사용하여 사이트 디렉토리의 매개변수를 변경할 수 있습니다.

구현

위의 자료는 다소 혼란스럽게 제시되었습니다. 구체적이고 간단한 구현 예를 살펴보겠습니다.

nginx와 php-fpm이 이미 설치되어 있다고 가정합니다.

이제 정적 파일에 대한 요청이 nginx 자체에서 처리되고 PHP 스크립트에 대한 요청이 처리를 위해 php-fpm으로 전송되도록 nginx에서 가상 호스트를 구성해야 합니다. 예:

서버(
들어라 80;
서버 이름 webpanels.spb.ru;

루트 /var/www/webpanels;
색인 index.php;

위치 ~ \.php$ (
try_files $uri =404;

fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_params를 포함합니다;
}

위치 ~ ^/(fpmstat|ping)$ (
access_log off;
127.0.0.1을 허용합니다.
123.123.123.123을 허용합니다. #당신의 IP
모두 거부하다;
fastcgi_params를 포함합니다;
fastcgi_param SCRIPT_FILENAME /fpmstat;
fastcgi_pass unix:/var/run/phpfpm-webpanels.sock;
}

위치 ~* ^.+.(html|jpg|jpeg|gif|css|png|js|ico|txt)$ (
60일에 만료됩니다.
}
}

이는 요청을 리디렉션할 위치를 나타냅니다. 우리의 경우에는 Unix 소켓이 사용됩니다. 또한 인덱스 파일과 파일 경로를 나타냅니다. 보시다시피 모든 것이 아주 간단합니다. 이 예는 공식으로 사용될 수 있습니다.

이제 php-fpm을 구성해 보겠습니다. Debian에서 일반 설정은 /etc/php5/fpm/php-fpm.conf 파일에 있습니다:

pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log
process.max = 64
프로세스.우선순위 = -5
rlimit_files = 1024
events.mechanism = epoll
include=/etc/php5/fpm/pool.d/*.conf

이러한 설정은 최소한이며 기본적으로 많은 부분이 남아 있다는 것이 분명합니다. 하지만 그것은 효과가 있고 아마도 하루에 수천 번의 방문을 아무 문제 없이 처리할 것입니다.

위에는 풀 설정의 예가 나와 있습니다. 각 풀은 다음과 같은 명령을 사용하여 생성할 수 있는 별도의 사용자에 의해 시작된다는 점을 기억할 가치가 있습니다.

Useradd -m -d /var/www/webpanels -s /usr/sbin/nologin -c "webpanels 사이트" -U webpanels

또한 정상적인 작동을 위해서는 /etc/php5/fpm/php.ini 파일에 다음 매개변수를 설정해야 한다고 합니다:

cgi.fix_pathinfo = 0

또한 Apache의 포기로 인해 mod_rewrite 규칙을 nginx에서 이해할 수 있는 규칙으로 변환해야 할 수도 있습니다. 예를 들어 다음 위치에서 제공되는 변환기를 사용하여 이 작업을 수행할 수 있습니다.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: