흔 한 Nginx 설정 옵션 정리

5583 단어
인터넷 에 되 게 많아 요. 
Nginx
 의 튜 토리 얼 과 샘플 설정 파일, 시스템 운영 망 도 Nginx 와 관련 된 설정 글 을 발표 한 적 이 있 습 니 다.
본 고 는 Nginx 설정 과 관련 된 기 교 를 정리 하여 당신 에 게 어느 정도 도움 이 되 기 를 바 랍 니 다.
파일 포함
주 nginx. conf 파일 에 모든 것 을 설정 하지 마 십시오. 작은 파일 로 나 누 어야 합 니 다.당신 의 동 료 는 당신 에 게 매우 감사 할 것 입 니 다.예 를 들 어 제 구 조 는 upstream 의 pool 을 하나의 파일 로 정의 하고 하나의 파일 로 location 처리 서버 의 다른 응용 을 정의 합 니 다.
예:
upstreams.conf
upstream cluster1 {
fair;
server app01:7060;
server app01:7061;
server app02:7060;
server app02:7061;
}

upstream cluster2 {
fair;
server app01:7071;
server app01:7072;
server app02:7071;
server app02:7072;
}

locations.conf
location / {
root /var/www;
include cache-control.conf;
index index.html index.htm;
}

location /services/service1 {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

add_header Pragma "no-cache";

proxy_pass http://cluster1/;
}

location /services/service2 {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

add_header Pragma "no-cache";

proxy_pass http://cluster2/service2;
}

servers.conf
server {
listen 80;
include locations.conf;
}

현재, nginx. conf 는 매우 깨끗 하고 간단 해 보 입 니 다. (gzip 를 분리 하 는 설정 옵션 과 같은 파일 을 더 많이 분리 할 수 있 습 니 다.)
nginx.conf
worker_processes 4;
worker_rlimit_nofile 10240;

events {
worker_connections 10240;
use epoll;
}

http {
include upstreams.conf;

include mime.types;
default_type application/octet-stream;

log_format custom '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" "$http_x_forwarded_for" $request_time';

access_log /usr/local/nginx/logs/access.log custom;

proxy_buffering off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;

gzip on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml application/xml+rss image/svg+xml application/x-font-ttf application/vnd.ms-fontobject;
gzip_disable "MSIE [1-6]\.";

# proxy cache config
proxy_cache_path /mnt/nginx_cache levels=1:2
keys_zone=one:10m
inactive=7d max_size=10g;
proxy_temp_path /var/tmp/nginx_temp;

proxy_next_upstream error;

include servers.conf;
}

이 nginx. conf 파일 은 흔 하지 않 은 설정 옵션 을 사 용 했 습 니 다. 중요 한 것 을 지적 할 필요 가 있 습 니 다.
여러 워 커  프로 세 스
Nginx 가 여러 개의 CPU 와 다 핵 이 라면 다 핵 으로 설정 하 는 것 이 좋 습 니 다.
worker_processes 4;

열 린 파일 핸들 추가
Nginx 서비스 가 많은 데 이 터 를 사용 하면 열 수 있 는 파일 핸들 을 최대 로 늘 리 는 것 이 유용 합 니 다. 기본 값 은 1024 개 에 불과 하기 때문에 'ulimit - n' 을 사용 하여 현재 시스템 의 설정 을 볼 수 있 습 니 다.
worker_rlimit_nofile 10240;

맞 춤 형 로그
logformat 와 accesslog 두 옵션 의 설정 입 니 다.일반적으로 우 리 는 "$http x forward for" 와 같은 몇 가지 매개 변 수 를 가장 자주 사용 합 니 다. 예 를 들 어 load balancer 의 장치 이전의 IP 를 볼 수 있 고 "$request time" 은 Nginx 를 볼 수 있 습 니 다.
압축 하 다.
압축 은 텍스트 에 매우 유용 하 다.
gzip on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml application/xml+rss image/svg+xml application/x-font-ttf application/vnd.ms-fontobject;
gzip_disable "MSIE [1-6]\.";

프 록 시 옵션
이 옵션 들 은 모든 location 에서 설정 할 수 있 습 니 다.
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Pragma "no-cache";

이 중 에 맞 춤 형 인 자 를 추 가 했 습 니 다. 바로 'no - cache' 입 니 다. 그러면 cache 의 내용 을 사용 하지 않 을 것 입 니 다.
에이전트 캐 시
Nginx 를 사용 하면 캐 시 서버 로 캐 시 파일 을 가 져 올 수 있 습 니 다. 설정 이 필요 합 니 다.  proxy_cache_path 와  proxy_temp_path  HTTP directive 에서location 에 설정 합 니 다. cache 하고 싶 은 내용 이 있다 면.
proxy_cache_path /mnt/nginx_cache levels=1:2
keys_zone=one:10m
inactive=7d max_size=10g;
proxy_temp_path /var/tmp/nginx_temp;

이것 은 다른 인 자 를 추가 하고 싶 을 수도 있 습 니 다.
proxy_cache one;
proxy_cache_key mylocation.$request_uri;
proxy_cache_valid 200 302 304 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504 http_404;

HTTP caching options
때때로 당신 은 다른 것 을 사용 하여 Cache 를 만 들 고 싶 습 니 다. 당신 은 어떻게 cache 를 지정 해 야 할 지도 모 릅 니 다.cache 에 메 시 지 를 줄 수 있 는 파일 include 는 루트 의 location 에 있 습 니 다.
location / {
root /var/www;
include cache-control.conf;

index index.html index.htm;
}

다른 파일 에서 다른 머리 를 지정 할 수 있 습 니 다.
# default cache 1 day
expires +1d;

if ($request_uri ~* "^/services/.*$") {
expires +0d;
add_header Pragma "no-cache";
}

if ($request_uri ~* "^/(index.html)?$") {
expires +1h;
}

SSL
ssl 연결 을 설정 하려 면
server {
server_name www.example.com;
listen 443;
ssl on;
ssl_certificate /usr/local/nginx/ssl/cert.pem;
ssl_certificate_key /usr/local/nginx/ssl/cert.key;

include locations.conf;
}

좋은 웹페이지 즐겨찾기