Nginx 기본 설정 및 응용
29818 단어 Nginx
본 고 는 블 로 거들 이 Nginx 를 독학 할 때 정리 한 노트 로 인터넷 여러 곳 에서 자 료 를 수집 하고 정리한다.일부 내용 이 다른 문장 에서 발췌 되 어 문장의 출처 가 이미 명확 하 게 기억 되 지 않 는 다.삭제 하 다.
콘 셉 트
Nginx (engine x 와 발음) 는 비동기 프레임 워 크 의 웹 서버 로 역방향 프 록 시, 부하 분산 기, HTTP 캐 시 로 도 사용 할 수 있 습 니 다.
기본 설정
1. 파일 구조 설정
... #
events {
#events
...
}
http #http
{
... #http
server #server
{
... #server
location [PATTERN] #location
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http
}
2. 구조 상세 설명
: nginx 전역 에 영향 을 주 는 명령 을 설정 합 니 다.일반적으로 nginx 서버 를 실행 하 는 사용자 그룹, nginx 프로 세 스 pid 저장 경로, 로그 저장 경로, 프로필 도입, worker process 수 생 성 등 이 있 습 니 다.events
: nginx 서버 에 영향 을 주거 나 사용자 와 의 네트워크 연결 을 설정 합 니 다.모든 프로 세 스 의 최대 연결 수가 있 습 니 다. 어떤 이벤트 구동 모델 을 선택 하여 연결 요 구 를 처리 하 는 지, 여러 개의 네트워크 연결 을 동시에 받 아들 이 고 여러 개의 네트워크 연결 을 직렬 화 할 수 있 는 지 여부 등 이 있 습 니 다.http
: 여러 개의 server, 프 록 시, 캐 시, 로그 정의 등 절대 다수의 기능 과 제3자 모듈 의 설정 을 포함 할 수 있 습 니 다.파일 도입, mime - type 정의, 로그 사용자 정의, sendfile 전송 파일 사용 여부, 연결 시간 초과, 단일 연결 요청 수 등.server
: 가상 호스트 의 관련 매개 변 수 를 설정 합 니 다. http 에 여러 개의 server 가 있 을 수 있 습 니 다.location
: 요청 한 경로 와 각종 페이지 의 처리 상황 을 설정 합 니 다.기능.
Nginx 주요 기능: 1, 프 록 시 서비스 2, 부하 균형 3, 정적 자원 (동정 분리) 4, 캐 시 서비스
1. 대리 서비스
proxy_pass URL;
URL 、 IP 。
"http" "https"
upstream proxy_pass
(1)proxy_list
upstream proxy_list
{
server http://192.168.1.100:8080/uri/;
server http://192.168.1.200:8080/uri/;
}
server
{
location /
{
proxy_pass proxy_list;
}
}
(2)proxy_list
upstream proxy_list
{
server 192.168.1.100:8080/uri/;
server 192.168.1.200:8080/uri/;
}
server
{
location /
{
proxy_pass http://proxy_list;
}
}
그리고 URL 에 접근 하기 위해 URI 가 포함 되 어 있 는 지 주의해 야 합 니 다. "http://www.test.com/test/index.html예 를 들 면
server{
server_name www.test.com;
location /test/
{
#proxy_pass http://192.168.12.19; ---> "http://192.168.12.19/test/index.html"
#proxy_pass http://192.168.12.19/index/; ---> "http://192.168.12.19/index/index.html"
#proxy_pass http://192.168.12.19/; ---> "http://192.168.12.19/index.html"
}
}
기타 명령 어:
location / {
index index.jsp;
proxy_pass http://proxy_list; # , upstream
#
proxy_redirect off;# , 301
# Web X-Forwarded-For IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m; #
client_body_buffer_size 128k; #
proxy_connect_timeout 300; #nginx ( )
proxy_send_timeout 300; # ( )
proxy_read_timeout 300; # , ( )
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; # , , upstream
}
2. 부하 균형
프 록 시 그룹 설정:
upstream proxy_list{
server 192.168.1.100:8080;
server 192.168.1.200:8080;
}
server {
....
location ~*^.+$ {
proxy_pass http://proxy_list; # proxy_list
}
부하 균형 전략 은 주로 다음 과 같은 네 가지 가 있다.
upstream proxy_list{
server 192.168.1.100:8080;
server 192.168.1.200:8080 backup; #
}
upstream proxy_list{
server 192.168.1.100:8080;
server 192.168.1.200:8080;
}
upstream proxy_list{
server 192.168.1.100:8080 weight=1;
server 192.168.1.200:8080 weight=2;
}
upstream proxy_list{
ip_hash;
server 192.168.1.100:8080;
server 192.168.1.200:8080;
}
nginx 부하 균형 설정 에 대한 몇 가지 상태 매개 변수 설명.
upstream mysvr {
server 192.168.1.100:8080 weight=2 max_fails=2 fail_timeout=2;
server 192.168.1.200:8080 weight=1 max_fails=2 fail_timeout=1;
}
3. 정적 자원 (동정 분리)
사이트 의 응답 속 도 를 높이 기 위해 프로그램 서버 (Tomcat, Jboss 등) 의 부 하 를 줄 일 수 있 습 니 다. 정적 자원, 예 를 들 어 그림, js, css 등 파일 에 대해 우 리 는 역방향 프 록 시 서버 에서 캐 시 를 할 수 있 습 니 다. 그러면 브 라 우 저 는 정적 자원 을 요청 할 때 프 록 시 서버 는 백 엔 드 서버 에 전송 하지 않 고 직접 처리 할 수 있 습 니 다.사용자 가 요청 한 동적 파일, 예 를 들 어 servlet, jsp 는 Tomcat, Jboss 서버 에 전송 합 니 다. 이것 이 바로 동정 분리 입 니 다.이것 도 역방향 프 록 시 서버 의 중요 한 역할 이다.
정적 파일 요청: gif, jpg, js, css 등 정적 자원 요청 은 Nginx 에서 처리 합 니 다. 설정 은 다음 과 같 습 니 다.
location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|js|css)$
{
root /usr/webapps;
expires 30d;
}
4. 캐 시 서비스
전체 설정:
#vim /usr/local/nginx/conf/nginx.conf
upstream node {
server 192.9.191.31:8081;
server 192.9.191.31:8082;
}
proxy_cache_path /cache levels=1:2 keys_zone=cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
listen 80;
server_name www.test.com;
index index.html;
if ($request_uri ~ ^/(static|login|register|password)) {
set $cookie_nocache 1;
}
location / {
proxy_pass http://node;
proxy_cache cache;
proxy_cache_valid 200 304 12h;
proxy_cache_valid any 10m;
add_header Nginx-Cache "$upstream_cache_status";
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
proxy_no_cache $http_pargma $http_authorization;
}
}
매개 변수 설명:
proxy_cache_path /soft/cache levels=1:2 keys_zone=cache:10m max_size=10g inactive=60m use_temp_path=off;
#proxy_cache //
#levels //
#keys_zone // ,10m: ,1m 8000key
#max_size // , Nginx
#inactive //60
#use_temp_path // , ,
proxy_cache cache;
proxy_cache_valid 200 304 12h;
proxy_cache_valid any 10m;
add_header Nginx-Cache "$upstream_cache_status";
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
#proxy_cache //
#proxy_cache_valid // 200|304 12h, 10
#proxy_cache_key // key
#add_header // , respoce
#proxy_next_upstream // 502-504 ,
일부 페이지 는 캐 시 를 추가 하지 않 고 다음 설정 을 통 해 이 루어 집 니 다.
if ($request_uri ~ ^/(static|login|register|password)) {
set $cookie_nocache 1;
}
캐 시 정리:
1.rm
rm -rf /cache/*
2. ngx_cache_purge , nginx
전체 nginx 설정:
user nobody; # , nobody nobody。
worker_processes 2; # , 1
#pid /nginx/pid/nginx.pid; # nginx
#error_log log/error.log debug; # , 。 ,http ,server , :debug|info|notice|warn|error|crit|alert|emerg
events{
accept_mutex on; # , , on
multi_accept on; # , off
#use epoll; # ,select|poll|kqueue|epoll|resig|/dev/poll|eventport
worker_connections 1024; # , 512
}
http{
#
default_type application/octet-stream;
server_names_hash_bucket_size 128;
# headerbuffer , 32KB
client_header_buffer_size 32k;
# , 4 32KB
large_client_header_buffers 4 32k;
#
client_max_body_size 356m;
#nginx HttpLog , nginx , access
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access
access_log /var/log/nginx/access.log access;
# , tcp_nopush tcp_nodelay on, 。
sendfile on;
tcp_nopush on;
tcp_nodelay on;
#
keepalive_timeout 65;
server_tokens off;
#
client_body_buffer_size 512k;
proxy_connect_timeout 5;
proxy_send_timeout 60;
proxy_read_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
# gzip
gzip on;
#
gzip_min_length 1k;
#4 16k
gzip_buffers 4 16k;
# HTTP , 1.1
gzip_http_version 1.1;
#gzip , 1~9 ,1 , ,9 , , CPU
gzip_comp_level 2;
#
gzip_types text/plain application/x-javascript text/css application/xml;
# gzip
gzip_vary on;
upstream mycluster{
server 192.168.1.100:8080 weight=1;
server 192.168.1.200:8080 weight=1;
}
server{
listen 8080;
server_name 192.168.32.228;
charset utf-8; # utf-8;
#location / {
# root html;
# index index.html index.htm;
#}
#location ~ .*\.(jsp|do|action)$
location / {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://mycluster;
# IP
proxy_set_header X-Real-IP $remote_addr;
# Host
proxy_set_header Host $host;
# , IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#
proxy_set_header X-Forwarded-Proto $scheme;
deny 127.0.0.1; # ip
allow all; # ip
}
# nginx
location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
{
root /usr/local/webapps;
expires 30d;
}
# nginx
location ~ .*\.(js|css)?$
{
root /usr/local/webapps;
expires 1h;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
linux2에 nginx 설치설치 가능한 nginx를 확인하고, 해당 nginx를 설치한다. localhost 혹은 해당 ip로 접속을 하면 nginx 화면을 볼 수 있다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.