nginx 의 기본 설정
#
user www-data;
# , cpu
worker_processes 1;
# PID
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
#
events {
use epoll; #epoll IO(I/O Multiplexing) , linux2.6 , nginx
worker_connections 1024;# worker process
# multi_accept on;
}
# http ,
http {
# mime , mime.type
include /etc/nginx/mime.types;
default_type application/octet-stream;
#
access_log /var/log/nginx/access.log;
#sendfile nginx sendfile (zero copy ) , ,
# on, IO , off, I/O , uptime.
sendfile on;
#tcp_nopush on;
#
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
# gzip
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
#
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
#
upstream mysvr {
#weigth ,
# Squid 3128
server 192.168.8.1:3128 weight=5;
server 192.168.8.2:80 weight=1;
server 192.168.8.3:80 weight=6;
}
server {
# 80
listen 80;
# www.xx.com
server_name www.xx.com;
#
access_log logs/www.xx.com.access.log main;
#
location / {
root /root; #
index index.php index.html index.htm; #
fastcgi_pass www.xx.com;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /root;
}
# ,nginx
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
root /var/www/virtual/htdocs;
# 30 , , , , 。
expires 30d;
}
#PHP FastCGI . FastCGI .
location ~ \.php$ {
root /root;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name;
include fastcgi_params;
}
# Nginx
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd;
}
# .htxxx
location ~ /\.ht {
deny all;
}
}
}
, Nginx
, http :
# http ,
http {
# mime , mime.type
include /etc/nginx/mime.types;
default_type application/octet-stream;
#
access_log /var/log/nginx/access.log;
#
#。。。。。。。。。。
#
upstream mysvr {
#weigth ,
server 192.168.8.1x:3128 weight=5;# Squid 3128
server 192.168.8.2x:80 weight=1;
server 192.168.8.3x:80 weight=6;
}
upstream mysvr2 {
#weigth ,
server 192.168.8.x:80 weight=1;
server 192.168.8.x:80 weight=6;
}
#
server {
# 192.168.8.x 80
listen 80;
server_name 192.168.8.x;
# aspx
location ~ .*\.aspx$ {
root /root; #
index index.php index.html index.htm; #
proxy_pass http://mysvr ;# mysvr
# .
proxy_redirect off;
# 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 90; #nginx ( )
proxy_send_timeout 90; # ( )
proxy_read_timeout 90; # , ( )
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
}
}
}
Nginx web , 。 apache ,nginx 。
nginx , nginx 。 apache ,nginx 。 , cgi,fastcgi apache web , nginx,nginx 。 。 , nginx 。nginx 。
nginx nginx, , 。
nginx ,nginx nginx nginx.conf(nginx.conf include ) 。
nginx 。 nginx /usr/local/nginx/nginx.conf。 /usr/local/nginx/nginx.conf.default。 .default 。.default , 。 , 。 , 。
cp /usr/local/nginx/nginx.conf /usr/local/nginx/nginx.conf-20121224
nginx.conf
/usr/loca/nginx/nginx -t
kill -HUP `cat /usr/local/nginx/nginx.pid`
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
。 , 。 :
- # ,nginx 。
- ( ,worker_processes pid), ( ,1 logs/nginx.pid) ( ,"logs/error.log notice")
-
- ,
events
여러 개의 키 명령 을 매개 변수 로 포함 할 수 있다.이 하위 명령 들 은 괄호 로 둘러싸 여 있다.
nginx 는 공백 문자 (예 를 들 어 tab, 빈 칸, 줄 바 꿈 문자) 를 처리 하지 않 지만 좋 은 들 여 쓰기 가 장기 적 으로 설정 파일 을 실행 하 는 효율 을 높 일 수 있 습 니 다.좋 은 들 여 쓰기 설정 파일 을 더 유창 하 게 읽 을 수 있 습 니 다. 몇 달 전에 도 설정 정책 을 쉽게 알 수 있 습 니 다.
다음은 프로필 을 계속 읽 겠 습 니 다.
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
"http {}" 블록의 시작 은 프로필 의 시작 과 같이 표준 설정 입 니 다. 수정 할 필요 가 없습니다.여기 서 우 리 는 이러한 요소 에 주 의 를 기울 여야 한다.
이 부분 내용 의 시작 "include" 문 구 는 / usr / loca / nginx / ime. types 파일 에서 nginx. conf 파일 include 문 구 를 포함 합 니 다.include 는 ningx. conf 파일 의 가 독성 과 조직 성에 유용 합 니 다.
include 를 너무 많이 사용 할 수 없습니다. 너무 많은 재 귀적 인 include 파일 이 혼 란 스 러 울 수 있 으 므 로 include 를 합 리 적 으로 사용 하여 설정 파일 의 선명 함 과 관 리 를 확보 해 야 합 니 다.
log 를 제거 할 수 있 습 니 다.format 명령 전의 설명 과 이 몇 줄 의 변 수 를 기록 하고 싶 은 정 보 를 수정 합 니 다.
gzip 명령 은 nginx 에 게 gzip 압축 방식 을 사용 하여 대역 폭 사용 을 낮 추고 전송 속 도 를 가속 화 하 라 고 알려 줍 니 다.gzip 압축 을 사용 하려 면 설정 파일 의 gzip 위치 에 다음 설정 을 추가 해 야 합 니 다. gzip on;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain text/html text/css
application/x-javascript text/xml
application/xml application/xml+rss
text/javascript;
gizp 압축 을 사용 하 는 것 은 대가 가 없 는 것 이 아 닙 니 다.대역 폭 을 낮 추 는 동시에 CPU 사용 도 늘 렸 다.gzip_cop_level 의 매개 변수 수치 범위 1 - 9, 9 는 CPU 와 1 을 가장 많이 사용 하고 기본 값 은 1 입 니 다.
또한, 위의 세 션 인 'http {' 는 끝 '}' 을 포함 하지 않 으 며, 나머지 부분 은 아래 에서 계속 합 니 다.
가상 컴퓨터 서버 설정
저희 집 은 nginx. conf 입 니 다. 다음 프로필 은 이 렇 습 니 다. server {
listen 80;
server_name localhost;
access_log logs/localhost.access.log main;
location / {
root html;
index index.html index.htm;
}
}
}
http {} 블록 이 여기 서 끝 나 는 것 을 볼 수 있 습 니 다.
server 명령 블록 은 위의 예 에서 보 듯 이 우리 nginx 사용자 가 주로 자신의 가상 호스트 를 설정 하 는 곳 입 니 다.server 블록 에는 중요 한 명령 이 많 습 니 다.listen 명령 은 nginx 가 특정한 hostname, ip 또는 tcp 포트 에서 연결 을 감청 하 는 것 을 알려 줍 니 다.기본적으로 http 서 비 스 는 80 포트 에서 실 행 됩 니 다.이 listen 명령 들 은 모두 유효 합 니 다.listen 127.0.0.1:80;
listen localhost:80;
listen 127.0.0.1:8080;
listen localhost:8080;
listen 192.168.3.105:80;
listen 192.168.3.105:8080;
listen 80;
listen *:80;
listen 8080;
listen *:8080;
listen 12.34.56.77:80;
listen 12.34.56.78:80;
listen 12.34.56.79:80;
이런 예 에서 우 리 는 많은 다른 표현 방식 을 볼 수 있다.
1 조 2 개 명령 은 서버 감청 이 127.0.0.1 또는 localhost 의 80 포트 에 있 음 을 가리 키 며, localhost 는 보통 / etc / hosts 가 127.0.0.1 을 가리 키 는 것 으로 정의 합 니 다.
2 조 는 80 이 아 닌 포트 번호 감청 을 제외 하고 1 조 와 같다.
세 번 째 예 는 서버 감청 이 192.168.3.105 의 80 과 8080 포트 에 있 음 을 정의 한다.
네 번 째 예 는 모든 주소 에서 특정한 포트 를 감청 하 는 것 이다.listen 80 은 listen *: 80 과 같 고 listen 8080 은 listen *: 80 과 같 습 니 다.
마지막 예 는 서버 가 12.34.56.77 / 78 / 79 의 80 포트 에 있 는 요청 만 감청 하도록 설정 합 니 다.
server_name 명령 은 도 메 인 이름 을 기반 으로 하 는 가상 호스트 를 설정 할 수 있 습 니 다. 요청 한 머리 내용 에 따라 ip 서버 에서 여러 도 메 인 이름 을 설정 할 수 있 습 니 다.다음은 이 servername 의 매개 변 수 는 유효 합 니 다:server_name nginx.cn;
server_name nginx.cn www.nginx.cn;
server_name *.nginx.cn;
server_name .nginx.cn;
server_name nginx.*;
server_name nginx.cng bucknell.net brackley.org;
server_name localhost litchfield bleddington;
server_name "";
여러 도 메 인 이름 사 이 를 빈 칸 으로 구분 합 니 다.nginx 는 가상 호스트 에 하나 이상 의 이름 이 있 거나 마스크 '*' 를 사용 하여 가상 호스트 의 이름 을 설정 할 수 있 습 니 다.위의 예 에서 우 리 는 매우 많은 특수 한 점 을 보 았 다.
첫 번 째 예, 먼저 server 를 정의 합 니 다.nginx. cnhttp://nginx.cn이 호스트 에 요청 할 겁 니 다.두 번 째 예 는 nginx. cn 과 www. nginx. cn 을 설정 하 였 습 니 다. 그러면http://nginx.cn화해시키다http://www.nginx.cn이 호스트 에 요청 할 겁 니 다.
*. nginx. cn 과. nginx. cn 은 같은 설정 입 니 다. 이 호스트 는 nginx. cn 에서 온 모든 하위 도 메 인 이름 을 처리 합 니 다. 예 를 들 어 www. nginx. cn, blog. nginx. cn 등 2 조 servername nginx. * 를 설정 하고 서버 를 설정 하여 nginx 로 시작 하 는 모든 요청 을 처리 합 니 다.예 를 들 어 nginx. com, nginx. cn, nginx. net, nginx. baidu. com 다음 조 첫 번 째 servername 설정, 호스트 처리 요청 을 설정 합 니 다.nginx 는 유효한 도 메 인 이름 이 아 닌 이름 을 설정 할 수 있 습 니 다.예 를 들 어 다음 설정 에서 우 리 는 유효한 도 메 인 이름 이 아 닌 세 가지 예 를 볼 수 있 습 니 다. localhost, litchfiled 와 bledington.nginx 는 요청 한 HTTP 헤더 의 도 메 인 이름 만 찾 지만 도 메 인 이름 이 올 바른 지 판단 하지 않 습 니 다. 이 예 에서 호스트 이름 은 / etc / hosts 에 할당 할 수 있 습 니 다.이 컴퓨터 에서 디 버 깅 할 때 도 메 인 이름 이 아 닌 호스트 이름 을 사용 하 는 것 이 더 적합 할 때 가 있 습 니 다.
마지막 예, servername 은 빈 따옴표 로 설정 되 어 있 습 니 다. nginx 에 hostname 이 없 는 모든 요청 을 캡 처 하거나 hostname 이 다른 server 에 없 음 을 알려 줍 니 다.name 에서 지정 한 것 입 니 다.
우 리 는 다음 server 명령 블록 을 계속 분석 하고 access 를 봅 시다.log 명령.access_log logs/nginx.access.log;
access_log /srv/http/ducklington.org/logs/access.log;
access_log /var/log/nginx/access/ducklington.org;
access_log off;
첫 번 째 예, 로 그 는 상대 경 로 를 사용 합 니 다. 로그 파일 은 설정 파일 과 같은 등급 의 디 렉 터 리 에 저 장 됩 니 다. 즉, 로 그 는 / usr / local / nginx / logs / nginx. access. log 에 저 장 됩 니 다.다음 두 가지 예 는 완전한 절대 경 로 를 정의 했다.마지막 예 는 access log 를 닫 고 파일 에 접근 로 그 를 기록 하지 않 습 니 다.
server 블록 의 마지막 부분 은 location 명령 블록 입 니 다. client 의 서로 다른 요청 목표 에 대해 location 는 서버 의 서로 다른 응답 을 설정 하 는 데 사 용 됩 니 다.
servername 명령 설정 nginx 처리 요청 은 요청 에 포 함 된 정 보 를 사용 하 는 것 과 마찬가지 로 location 명령 설정 은 서로 다른 위치 자원 의 요청 에 어떻게 응답 하 는 지 설정 합 니 다.예 를 들 면:location / { }
location /images/ { }
location /blog/ { }
location /planet/ { }
location /planet/blog/ { }
location ~ IndexPage\.php$ { }
location ~ ^/BlogPlanet(/|/index\.php)$ { }
location ~* \.(pl|cgi|perl|prl)$ { }
location ~* \.(md|mdwn|txt|mkdn)$ { }
location ^~ /images/IndexPage/ { }
location ^~ /blog/BlogPlanet/ { }
location = / { }
앞의 다섯 가지 예 는 url 도 메 인 이름 뒤에 시 작 된 부분 과 글자 별로 일치 합 니 다.요청 을 가정 하 다http://www.nginx.cn, 우 리 는 servername 이 www. nginx. cn 과 일치 하면 "location /" 명령 이 이 요청 을 캡 처 합 니 다.nginx 는 일치 도가 가장 높 은 location 을 사용 합 니 다.예 를 들 면http://ducklington.org/planet/blog/화해시키다http://ducklington.org/planet/blog/about/"location / planet / blog" 가 아 닌 "location / planet / blog" 와 일치 합 니 다.
위치 설정
특정한 요청 에 대해 nginx 가 하나의 location 에 일치 하면 처리 합 니 다.그러면 이 요청 의 응답 내용 은 이 location 블록 에 있 는 명령 에 의 해 결 정 됩 니 다.우 리 는 먼저 가장 기본 적 인 location 설정 블록 을 보 겠 습 니 다.location / {
root html;
index index.html index.htm;
}
이 예 에서 중국어 파일 루트 (doucument root) 는 html / 디 렉 터 리 에 있 습 니 다.nginx 의 설치 디 렉 터 리 / usr / local / nginx 에 따 르 면 이 location 의 전체 경 로 는 / usr / local / nginx / html 입 니 다./ blog / includes / styles. css 파일 에 접근 요청 이 다른 location 블록 과 일치 하지 않 는 다 고 가정 하면 nginx 는 파일 시스템 에 있 는 / usr / local / nginx / html / blog / includes / styles. css 로 응답 합 니 다.물론 루트 명령 을 절대 경로 로 설정 할 수도 있 습 니 다.
index 명령 은 nginx 에 어떤 자원 을 사용 하 는 지 알려 줍 니 다. 요청 에 파일 이름 이 없 으 면.하면, 만약, 만약...http://.ducklington.org/자원 위 치 를 / usr / local / nginx / html / index. html 로 보완 합 니 다.index 가 여러 파일 을 설정 하면 nginx 는 첫 번 째 존재 하 는 보완 자원 을 찾 을 때 까지 순서대로 처리 합 니 다.index. html 가 관련 디 렉 터 리 에 없 으 면 index. htm 를 사용 합 니 다.둘 다 존재 하지 않 으 면 404 오 류 를 되 돌려 줍 니 다.
다른 location 명령 의 예 를 보 여 줍 니 다. 이 location 명령 들 은 모두 Ducklington. org 의 server 명령 블록 에 있 습 니 다.root /srv/www/ducklington.org/public_html;
location / {
index index.html index.htm;
}
location ~ \.php$ {
gzip off;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.pl;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
이 예 에서. php 로 끝 나 는 모든 요청 은 두 번 째 location 블록 으로 처 리 됩 니 다.두 번 째 문장 블록 은 모든 요청 에 fastcgi 핸들 을 지정 합 니 다.다른 요청 은 nginx 에서 첫 번 째 location 블록 으로 처리 합 니 다.
청구 하 다.http://ducklington.org// srv / www / ducklington. org / publichtml / index. html 이 존재 하지 않 는 다 면 / srv / www / ducklington. org / publichtml / index. htm, 둘 다 존재 하지 않 으 면 404 오 류 를 되 돌려 줍 니 다.
청구 하 다. http://ducklington.org/blog// srv / www / ducklington. org / publichtml / blog / index. html 존재 하지 않 으 면 / srv / www / ducklington. org / publichtml / blog / index. htm, 둘 다 존재 하지 않 으 면 404 오 류 를 되 돌려 줍 니 다.
청구 하 다.http://ducklington.org/tasks.php/ srv / www / ducklington. org / public 에 있 는 fastcgi 에 보 내 집 니 다.html / tasks. php 파일
청구 하 다. http://ducklington.org/squire/roster.php에 자리잡다,... /srv/www/ducklington.org/public_html / squire / roster. pl 의 파일 을 되 돌려 줍 니 다.
구체 적 인 location 매 칭 규칙 은 말 하지 않 겠 습 니 다. 모 르 는 것 은 여기 nginx location 매 칭 을 볼 수 있 습 니 다.
최선 의 실천
위의 예 와 설명 은 nginx server 를 설정 할 수 있 도록 충분 할 것 입 니 다.다음은 nginx server 를 설정 하 는 가장 좋 은 실천 을 보 여 줍 니 다.
우선, 구체 적 으로 설정 할 server 명령 블록 의 모든 명령 을 파일 에 넣 은 다음 include 문 구 를 사용 하여 설정 파일 에 포함 시 킵 니 다.
예 를 들 어 Ducklington. org 도 메 인 이름 을 연결 하려 면 먼저 Ducklington. org 의 server 명령 블록 을 / srv / www / ducklington. org / nginx. conf 에 설정 합 니 다.그리고 명령 include / srv / www / ducklington. org / nginx. conf 를 추가 합 니 다.설정 파일 의 http 블록 에 있 습 니 다.이렇게:http {
# [...]
include /srv/www/ducklington.org/nginx.conf;
# [...]
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.