지난 몇 달 동안의 프로젝트는 nginx 환경에서 구축되었습니다. 만일의 경우를 대비해 구성 파일의 관련 내용을 기록해 두겠습니다~~
자세한 구성 정보는 공식 문서를 주의 깊게 참조하세요: http://wiki.nginx.org/Configuration
#사용자 및 사용자 지정 이를 기반으로 nginx의 폴더 접근 권한을 설정하여 불법 사용자가 권한 없이 폴더에 접근하는 것을 방지할 수 있습니다. 그건 그렇고, PHP 프로젝트
#의 로그 파일을 읽고 쓰는 경우 사용자는 nginx가 아닙니다. 왜냐하면 nginx는 구문 분석을 위해 php를 php-cgi로 전달하므로 사용자는 php입니다. -cgi 소유자, 일반적으로 www-data
user nginx nginx;
#nginx를 여는 프로세스 수, 숫자는 다음과 같아야 합니다. 총 CPU 코어 수 이하, 프로그램 동시성 향상
worker_processes 4;
#전역 액세스 및 오류 로그 수준, [ 디버그 | 정보 | 알림 | 오류 발생 ]
access_log /var/nginx/access.log ;
error_log /var/nginx/error.log warning;
#기본 로그 형식 설정
log_format 액세스 $remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'" $http_user_agent" $http_x_forwarded_for';
#프로세스 실행 시 파일
pid /run/nginx.pid ;
#작업 모드 및 최대 연결 수
이벤트
{
#이벤트 모델, 사용 [ kqueue | rtsig | ];
# epoll 모델은 Linux 커널 2.6 이상에서 실행되는 고성능 네트워크 I/O 모델입니다. FreeBSD에서 실행하는 경우 kqueue 모델을 사용하세요.
epoll 사용;
#단일 프로세스의 최대 연결 수(최대 연결 수 = 연결 수 * 프로세스 수) , 내 구성은 768 *4
worker_connections 768;
#동시에 여러 요청을 수락할 수 있으며 높은 동시성
다중 수락;
}
# 설정 http 서버
http
{
MIME을 포함합니다. type; #MIME 형식 사용, 파일 확장자 및 파일 형식 매핑 테이블
default_type application/octet-stream; #기본 파일 형식, 파일 스트림
#charset utf- 8; #기본 인코딩
server_names_hash_bucket_size 128; #서버 이름의 해시 테이블 크기
#상한 설정 업로드 파일 크기는 8MB
client_max_body_size 8m;
#효율적인 파일 전송 모드 활성화, sendfile 함수(제로 복사 모드)를 호출하여 파일 출력 , 일반 응용 프로그램의 경우 on으로 설정하고, 다운로드와 같은 디스크 IO 부하가 높은 응용 프로그램에 사용되는 경우 #디스크와 네트워크 I/의 균형을 맞추기 위해 off로 설정할 수 있습니다. O 처리 속도를 높이고 시스템 로드와 가동 시간을 줄입니다. 참고: 영상이 비정상적으로 표시되면 끄기로 변경하세요.
sendfile on;
#액세스 흑백 목록 설정, 파일 이름, 크기
tcp_nopush on;
tcp_nodelay on; #네트워크 차단 방지
keepalive_timeout 65 #긴 연결 시간 초과, 단위는 초
# gzip을 켜면 GNU는 정적 리소스를 압축하고 웹사이트 액세스 속도를 최적화합니다.
gzip on; 🎜>#gzip 압축 출력 활성화
gzip_min_length 1k;#압축을 위한 최소 파일 크기 제한 활성화
gzip_buffers 4 16k;#gzip 압축 결과 데이터 스트림을 저장하기 위해 여러 단위의 캐시를 확보하고 한 번에 4*16=64k 캐시를 적용하도록 시스템을 설정합니다
gzip_http_version 1.0;#http1.0 이상을 사용하여 파일 압축
gzip_comp_level 2#압축 수준 , 1~10, 값이 클수록 압축률이 높아집니다
#압축 파일 형식, css, js, php, jpg, pnggzip_types
텍스트/일반 애플리케이션/x-javascript 텍스트/css 애플리케이션/xml 텍스트/javascript application/x-httpd-php 이미지/jpeg 이미지/gif 이미지/png
gzip_vary on;#예외 허용 gzip_disable"MISE[1-6]"#IE6 이하에서는 압축 비활성화 #limit_zone 크롤러 $binary_remote_addr 10m; #제한 활성화 IP upstream www.xxx.com을 사용해야 합니다. { # 업스트림 로드 밸런싱에서 가중치는 기계 구성에 따라 정의될 수 있는 가중치입니다. 가중치 매개변수는 가중치를 나타냅니다. 가중치가 높을수록 할당될 확률이 높아집니다. 서버 192.168.80.121:80 가중치=3; 서버 192.168.80.122:80 가중치=2; 서버 192.168.80.123:80 가중치=3; }
#FastCGI 관련 매개변수는 웹사이트의 성능을 향상시켜 리소스 사용량을 줄이고 액세스 속도를 높이는 것입니다. FASTCGI_SEND_TIMEOUT 300; FASTCGI_READ_TIMEOUT 300; > fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; # 각 서버 구성
서버
{
#기본 수신 http 포트 80, ipv4 및 ipv6 모두
listen 80;
listen [::]:80 default_server ipv6only=on;
#여러 도메인 이름을 공백으로 구분하여 사용할 수 있습니다
서버_이름 www.xx.com xx.com;
index index.php;
root /data/www/ xx;
#휴대폰이 다른 페이지로 연결됩니다
위치 / {
# 액세스 터미널 유형 결정
if ($http_user_agent ~* '(Android|iPhone|iPad|webOS|iPod|BlackBerry)') { rewrite ^.+ http://m. xx.com; } root /usr/share/nginx/html; index index.php index.html index.htm >
#이미지 캐시 시간 설정 , HTML 페이지 메타 태그와 유사하게 만료 또는 최대 수명
위치 ~ .(html |htm|gif|jpg|
)$ {
10일 만료;
root /usr/share /nginx/html; }#php 가이드 9000 포트
+)$ ; # 참고: php.ini에 "cgi.fix_pathinfo = 0;"이 있어야 합니다 # php5-cgi만 사용: 🎜> # 함께 php5-fpm :
#fastcgi_pass unix:/var/run/php5-fpm.sock; gi_script_name;include fastcgi_params; }
1시간 만료;
}
# 오류 페이지 error_page 500 502 503 504 /50x. html; location = /50x.html {
root /usr/share/nginx/html;}
#"/"에 대한 역방향 프록시 활성화
위치 / {proxy_set_header X-Real-IP $remote_addr;
# 백엔드 웹 서버는 X를 통해 사용자의 실제 IP를 얻을 수 있습니다. -Forwarded-For
proxy_set_header 일부 역방향 프록시 구성이며 선택사항입니다.
proxy_set_header Host $host;
client_max_body_size 10m; #클라이언트가 요청할 수 있는 단일 파일의 최대 바이트 수
client_body_buffer_size 128k; #버퍼 프록시는 클라이언트가 요청한 최대 바이트 수를 버퍼링합니다.
proxy_connect_timeout 90; -엔드 서버(프록시 연결 시간 초과)
proxy_send_timeout 90; #백엔드 서버 데이터 반환 시간(프록시 전송 시간 초과) proxy_read_timeout 90; #연결 성공 후 백엔드 서버 응답 시간(프록시 수신) Timeout) proxy_buffer_size 4k; # 사용자 헤더 정보를 저장할 프록시 서버(nginx)의 버퍼 크기 설정 proxy_buffers 4 32k; #proxy_buffers 버퍼, 평균 웹 페이지는 32k 미만으로 설정됩니다. proxy_busy_buffers_size 64k; #고부하 시 버퍼 크기(proxy_buffers*2) Proxy_temp_file_write_size 64k ; #캐시 폴더 크기를 설정합니다. 이 값보다 크면 업스트림 서버에서 전송됩니다 } #Nginx 상태를 볼 주소 설정 location /NginxStatus { stub_status on; access_log on; auth_basic "NginxStatus"; auth_basic_user_file confpasswd; #htpasswd 파일의 내용은 apache에서 제공하는 htpasswd 도구를 사용하여 생성할 수 있습니다. } #j2ee를 사용하는 경우 페이지를 포트로 직접 이동할 수 있습니다. 8080, 모든 jsp 페이지는 tomcat 또는 resin location ~ .(jsp|jspx|do|action)?$ { proxy_set_header 호스트 $host; proxy_set_header X-Real-IP $remote_addr; Proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8080; } } #모바일 접속을 위한 서버를 설정하고, 메인 사이트 서버에 접속하기 위해 휴대폰에서 요청을 받습니다. {
Listen 80;
server_name m .xx.com www.m.xx.com;
access_log /usr/share/nginx/logs/mobile_access.log;
error_log /usr/share/nginx/logs/mobile_error .log;
위치 / {
루트 /usr/share/nginx/html/mobile;
인덱스 index.html index.htm;
}
위치 ~ .(html|htm| gif |jpg|png)$ {
~ ;
FastCGI_SPLIT_PATH_INFO ^(.+. PHP) (/.+) $;
# 참고: "cgi.fix_pathinfo = 0; 🎜> ~ | .php;
' ' s ' s ' s ‐ ‐ ‐ ‐ ‐ 문서로 _root$fastcgi_script_name;
~
위 내용은 관련 내용을 포함하여 Nginx.conf 구성 요약을 소개하고 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.