Nginx 서버 초기 기본 설정 안내

10020 단어
1. pcre 를 준비 하고 정규 표현 식 과 일치 합 니 다.zlib, 압축 에 사용 합 니 다.이것 은 자세히 말 하지 않 겠 습 니 다. 가장 간단 한 nginx 를 설치 하려 면 이 두 가지 물건 을 준비 하 는 것 을 기억 하 세 요.루트 계 정 으로 서 비 스 를 시작 하 는 것 은 비교적 위험 합 니 다!  얼마 전 테스트 서버 가 해 킹 되 었 습 니 다. 결국 루트 가 시작 하 는 서 비 스 를 통 해 목 마 를 올 렸 습 니 다. 마지막 으로 ssh 까지 차단 하여 육계 가 되 었 습 니 다.그래서 뼈 아 픈 경험 을 통 해 저 에 게 서 비 스 를 위해 대응 하 는 그룹 과 사용 자 를 만 들 고 방문 권한 을 제한 하 며 위험 을 낮 춰 야 한다 고 알려 주 었 습 니 다!  nginx 에 ww 그룹 을 만 들 고 로그 인하 지 않 은 계 정 nginx 를 만 듭 니 다.

#    www  
groupadd -f www 
#    nginx   
useradd -s /sbin/nologin -g www nginx 

nginx 로그 파일 을 저장 할 디 렉 터 리 를 만 들 고 권한 을 부여 합 니 다.

#  nginx     
mkdir /var/log/nginx 
#       
chown nginx.www /var/log/nginx 

2. 컴 파일 설치 저 는 pcre, zlib, nginx 의 압축 패 키 지 를 모두 / opt / software 경로 에 두 었 습 니 다. 서 비 스 는 / opt / server 경로 에 설치 해 야 합 니 다.먼저 pcre, zlib, nginx 에 대한 압축 을 풀 고 컴 파일 설치:

./configure --prefix=/opt/servers/nginx \ 
--user=nginx \ 
--group=www \ 
--pid-path=/var/run/nginx.pid \ 
--error-log-path=/var/log/nginx/error.log \ 
--http-log-path=/var/log/nginx/access.log \ 
--with-pcre=/opt/software/pcre-8.10 \ 
--with-zlib=/opt/software/zlib-1.2.5 \ 
--with-http_stub_status_module \ 
--with-http_realip_module \ 
--with-http_gzip_static_module \ 
--without-http_fastcgi_module \ 
--without-http_memcached_module \ 
--without-http_map_module \ 
--without-http_geo_module \ 
--without-http_autoindex_module \ 
--with-poll_module 
&& make && make install 

3. 시스템 설정 은 nginx 가 서비스 로 서 service 명령 을 통 해 시작 하거나 중단 할 수 있 기 를 바 랍 니 다.이렇게 하 는 장점 은 내 가 어떤 사용자 로 이 service 명령 을 호출 하 든 잘못된 계 정 을 사용 해서 안전 문 제 를 가 져 오지 않 는 다 는 것 이다.시스템 파일 만 들 기:

vim /etc/init.d/nginx 

앞 사람 이 나 무 를 심 으 면 뒷사람 이 더 위 를 식 힌 다.이미 늙 은 새 가 시작 프로필 을 만 들 었 습 니 다:

#!/bin/bash 
# v.0.0.1 
# create by jackbillow at 2007.10.15 
# nginx - This shell script takes care of starting and stopping nginx. 
# 
# chkconfig: - 60 50 
# description: nginx [engine x] is light http web/proxy server 
# that answers incoming ftp service requests. 
# processname: nginx 
# config: /etc/nginx.conf 
nginx_path="/opt/servers/nginx" 
nginx_pid="/var/run/nginx.pid" 
 
# Source function library. 
. /etc/rc.d/init.d/functions 
 
# Source networking configuration. 
. /etc/sysconfig/network 
 
# Check that networking is up. 
[ ${NETWORKING} = "no" ] && exit 0 
[ -x $nginx_path/sbin/nginx ] || exit 0 
RETVAL=0 
prog="nginx" 
start() { 
# Start daemons. 
if [ -e $nginx_pid -a ! -z $nginx_pid ];then 
  echo "nginx already running...." 
  exit 1 
fi 
if [ -e $nginx_path/conf/nginx.conf ];then 
  echo -n $"Starting $prog: " 
  $nginx_path/sbin/nginx -c $nginx_path/conf/nginx.conf & 
  RETVAL=$? 
  [ $RETVAL -eq 0 ] && { 
    touch /var/lock/subsys/$prog 
    success $"$prog" 
  } 
  echo 
else 
  RETVAL=1 
fi 
  return $RETVAL 
} 
# Stop daemons. 
stop() { 
  echo -n $"Stopping $prog: " 
  killproc -d 10 $nigx_path/sbin/nginx 
  RETVAL=$? 
  echo 
  [ $RETVAL = 0 ] && rm -f $nginx_pid /var/lock/subsys/$prog 
} 
# See how we were called. 
case "$1" in 
start) 
  start 
  ;; 
stop) 
  stop 
  ;; 
restart) 
  stop 
  start 
  ;; 
status) 
  status $prog 
  RETVAL=$? 
  ;; 
*) 
  echo $"Usage: $0 {start|stop|restart|status}" 
  exit 1 
esac 
exit $RETVAL 

여기 경로: 참조

nginx_path="/opt/servers/nginx" 
nginx_pid="/var/run/nginx.pid" 

nginx 설치 경로 가 다른 위치 에 있다 면 수정 하 십시오!그리고 이 파일 에 실행 권한 을 부여 합 니 다:

chmod +x /etc/init.d/nginx 

시스템 서비스 에 추가:

chkconfig --add nginx 
chkconfig nginx on 

다음 명령 으로 nginx 서 비 스 를 제어 할 수 있 습 니 다!인용 하 다.

#  nginx 
service nginx start 
#  nginx 
service nginx stop 
#  nginx 
service nginx restart 
#  nginx   
service nginx status 

4. 기본 설정 이 상기 작업 을 완성 한 후에 nginx 는 급히 사용 하지 못 하고 기본 적 인 설정 과 최적화 작업 을 해 야 합 니 다.nginx 프로필 수정:

vim /opt/servers/nginx/conf/nginx.conf 

미조정 인용

#       ,     nginx     nginx   www    
user nginx www; 
#          (2  CPU   ) 
worker_processes 4; 
#        ,        [debug | info | notice | warn | error | crit] 
error_log /var/log/nginx/error.log crit; 
#           ulimit -n       
work_rlimit_nofile 65535; 
events { 
#     I/O  ,Linux epoll  ,Unix kqueue   
use epoll; 
#       
worker_connections 51200; 
} 
http{ 
 include  mime.types; 
 default_type application/octet-stream; 
 #   '"$sent_http_cache_control" "$sent_http_pl" "$request_time"'         
 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
      '$status $body_bytes_sent "$http_referer" ' 
      '"$http_user_agent" "$http_x_forwarded_for"' 
      '"$sent_http_cache_control""$sent_http_pl" "$request_time"'; 
 access_log   /var/log/nginx/access.log main; 
 ... 
 server{ 
  ... 
  location / { 
   root html; 
   index index.html index.htm index.jsp index.do; 
   # header      host、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; 
   proxy_pass_header Content-Type; 
   proxy_pass_header Content-Disposition; 
   proxy_pass_header Content-Length; 
   ... 
  } 
 } 
} 


5. 가상 디 렉 터 리 nginx 는 가상 디 렉 터 리 를 설정 하 는 것 이 간단 합 니 다. 주로 루트, alias 두 가지 명령 을 사용 합 니 다.접근 그림 서비스 예: 루트, 상대 경로 참조 에 사용

  location /image/ { 
    root /data; 
  } 


"/ image /" 경 로 를 방문 할 때 실제 적 으로 "/ data / image /" 를 방문 합 니 다. "/ data" 뒤에 "/" alias 가 있 지 않도록 주의 하 십시오. 절대 경로 참조 에 사용 합 니 다.

  location /image/ { 
    alias /data/img/; 
  } 


"/ image /" 경 로 를 방문 할 때 실제로 "/ data / img /" 를 방문 합 니 다. "/ data / img /" 가 "/" 로 끝 나 는 것 을 주의 하 십시오.
6. 방향 을 바 꾸 고 가끔 은 링크 를 고려 하지 않 고 내 보 냅 니 다. 갑자기 어느 날 에 조정 이 필요 하고 이미 내 보 낸 링크 주 소 를 신속하게 철회 하지 못 합 니 다.nginx 설정 을 스스로 수정 할 수 밖 에 없습니다.예 를 들 어 내 보 낸 링크: / activity. do? m = v 는 / 경 로 를 가리 키 려 고 합 니 다: 참조

rewrite ^/activity(.*)$ / last;

요청 한 인자 도 가 져 오 려 면: 참조

rewrite ^/activity(.*)$ /$1 last;

$1 은 첫 번 째 매개 변 수 를 가리 키 며 유추 합 니 다.
6. 모니터링 인용

  location /status { 
   stub_status on; 
   access_log off; 
   allow 10.10.0.0/16; 
   allow 10.1.0.0/16; 
   allow 10.11.0.0/16; 

   deny all; 
  }


인용 하 다.

Active connections: 14 
server accepts handled requests 
62 62 302 
Reading: 0 Writing: 3 Waiting: 11 


로그 분할

#!/bin/bash 
# THis script run at 00:00 
# author dongliang at 2012-09-07 
# Nginx Log Path 
logs_path="/var/log/nginx/" 
# Nginx PID Path 
nginx_pid="/var/run/nginx.pid" 
 
mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/ 
 
mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m% 
d").log 
 
mv ${logs_path}error.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/error_$(date -d "yesterday" +"%Y%m%d" 
).log 
 
kill -USR1 `cat $nginx_pid` 

실행 권한 부여

chmod +x nginx_log.sh 

새벽 실행

crontab -e 
0 0 * * * /opt/script/nginx_log.sh 

8. Nginx 부하 균형 은 http {...} 에 upstream {...} 을 설정 합 니 다. 참고: 참조

 upstream tomcat { 
  server 10.11.155.26:8080; 
  server 10.11.155.41:8080; 
 } 


이어서 location 노드 를 수정 하고 프 록 시 설정: 참조

location / { 
  ... 
   proxy_pass http://tomcat; 

  ... 
}


루트 경 로 를 방문 할 때 두 대의 서버 로 돌아 가면 서 백 엔 드 서버 가 tomcat 인지 Jetty 인지 상 관 없 이 조롱박 에 따라 바 가 지 를 그리 면 됩 니 다.물론 어떤 기 계 는 성능 이 좋 거나 부하 가 낮 으 면 높 은 부하 방 문 량 을 부담 할 수 있 고 가중치 (weight) 를 통 해 방문 빈 도 를 높 일 수 있다.수치 가 높 을 수록 배 정 된 요청 수가 많 습 니 다.server 명령 매개 변 수 는 다음 과 같 습 니 다. weight ― 가중치, 수치 가 클 수록 요청 수가 많 고 기본 값 은 1 입 니 다.max_fails ― 접근 에 실패 한 백 엔 드 서버 에 접근 하려 는 횟수.기본 값 은 1 입 니 다. 0 으로 설정 하면 검 사 를 닫 습 니 다.fail_timeout ― 실효 시간 초과, 여러 번 의 방문 이 실 패 했 을 때 이 노드 에 대한 접근 을 중단 합 니 다.down ― 서버 를 영구적 으로 오프라인 상태 로 표시 하여 ip 에 사용 합 니 다.hash 명령.backup ― 비 backup 서버 가 모두 다운 되 거나 바 쁠 때 만 사용 합 니 다.
예 를 들 어 이렇게 설정 할 수 있 습 니 다: 참조

 upstream tomcat { 
  server 10.11.155.26:8080 weight=5; 
  server 10.11.155.41:8080 weight=10; 
 } 


후자 가 나 누 어 얻 는 요구 수 는 비교적 높 을 것 이다.

좋은 웹페이지 즐겨찾기