nginx 최적화 및 설정

vi /usr/local/nginx/conf/nginx.confuser www www;worker_processes 4;
\ # 오류 로그 저장 디 렉 터 리 errorlog /usr/local/nginx/logs/error.log;error_log /usr/local/nginx/logs/error.log notice;error_log /usr/local/nginx/logs/error.log info;
\ # 프로 세 스 pid 저장 위치 pid / usr / local / nginx / logs / nginx. pid;
\ # 최대 파일 열기 수 (연결), 시스템 최적화 후의 ulimit - hsn 결과 worker 로 설정 가능rlimit_nofile 51200;
\ # cpu 친화력 설정, 프로 세 스 마다 다른 cpu worker 사용cpu_affinity 0001 0010 0100 1000 0001 00100100 1000;
\ # 작업 모드 및 연결 수 상한 이벤트 {use epoll; \ # epoll 은 다 중 재 활용 IO (I / O Multiplexing) 의 한 방식 이지 만 linux 2.6 이상 커 널 에 만 사용 하면 nginx 의 성능 을 크게 향상 시 킬 수 있 습 니 다 worker connections 1024; \ # 단일 배경 worker process 프로 세 스 의 최대 병렬 링크 수}
\ # http 서버 를 설정 하고 역방향 프 록 시 기능 을 이용 하여 부하 균형 지원 http {\ # mime 형식 include mime. types 를 설정 합 니 다. \ # 파일 확장자 와 형식 맵 표 default type application / ocket - stream; \ # 기본 파일 형식
include /usr/local/nginx/conf/proxy.conf;
\ # 로그 모드 log format main '$remote addr - $remote user [$time local] "$request"' $status $body bytes sent "$http referer" '$http user agent' "$http x forward for" '; access log logs / access. log main;
\ # 캐 시 요청 server names hash bucket size 128; client header buffer size 512 K; large client header buffers 4 512 k; \ # client max body size 100 m;
\ # 응답 헤더 와 오류 알림 에 있 는 버 전 번호 server tokens off 숨 기기;
\ # 효율 적 인 전송 모드 sendfile 켜 기;
\ # tcp nopush 인 자 를 활성화 하면 http response header 와 파일 의 시작 을 한 파일 에 넣 고 발표 할 수 있 습 니 다. 적 극적인 역할 은 네트워크 메시지 세그먼트 의 수 를 줄 이 는 것 입 니 다. tcp nopush on;
\ # tcp nodelay 를 활성화 하면 커 널 은 더 많은 바이트 로 패 킷 을 구성 하여 I / O 성능 tcp nodelay on 을 향상 시 킬 때 까지 기다 릴 것 입 니 다.
\ # 연결 시간 초과, 단 위 는 초 keepalive timeout 60;
\ # FastCGI 관련 매개 변수: 사이트 성능 개선 을 위해: 자원 점용 을 줄 이 고 접근 속 도 를 높이 기 위해 fastcgi connect timeout 300; fastcgi send timeout 300; fastcgi read timeout 300; fastcgi buffer size 64k; fastcgi busy buffers size 128 k; fastcgi temp file write size 128 k;
\ # gzip 압축 기능 gzip 켜 기;
\ # 압축 을 허용 하 는 페이지 의 최소 바이트 수 를 설정 합 니 다. 페이지 바이트 수 는 header 헤더 의 Content - Length 에서 가 져 옵 니 다. 기본 값 은 0 입 니 다. 페이지 가 많 든 많 든 압축 을 하 는 것 을 의미 합 니 다. 1K 이상으로 설정 하 는 것 을 권장 합 니 다. 1K 보다 작 으 면 누 를 수록 클 수 있 습 니 다. gzip min length 1k;
\ # 압축 버퍼 크기 입 니 다. 압축 결과 스 트림 캐 시 로 4 개 단 위 를 16K 로 신청 하 는 메모리 입 니 다. 기본 값 은 원본 데이터 크기 와 같은 메모리 공간 을 신청 하여 gzip 압축 결 과 를 저장 하 는 것 입 니 다. gzip buffers 4 16k;
\ # 압축 버 전 (기본 1.1, 전단 이 squid 2.5 일 때 1.0 사용) 은 HTTP 프로 토 콜 버 전 을 식별 하 는 데 사 용 됩 니 다. 기본 값 은 1.1 입 니 다. 현재 대부분의 브 라 우 저 는 GZIP 압축 해 제 를 지원 하고 있 으 며 기본 값 을 사용 하면 됩 니 다. gzip http version 1.1;
\ # 압축 비율. GZIP 압축 비율 을 지정 합 니 다. 1 압축 비율 이 가장 작고 처리 속도 가 가장 빠 릅 니 다. 9 압축 비율 이 가장 크 고 전송 속도 가 빠 르 지만 처리 가 가장 느 리 고 cpu 자원 도 소모 합 니 다. gzip comp level 2;
\ # 압축 형식 을 지정 합 니 다. "text / html" 형식 은 항상 gzip types text / plain application / x - javascript text / css application / xml 로 압축 됩 니 다.
\ # vary header 를 지원 합 니 다. 이 옵션 을 사용 하면 전방 의 캐 시 서버 캐 시가 GZIP 으로 압축 된 페이지 를 통과 할 수 있 습 니 다. 예 를 들 어 Squid 캐 시 로 Nginx 로 압축 된 데이터 입 니 다. gzip vary on;
\ # ssi 지원 을 시작 합 니 다. 기본 값 은 offssi on 입 니 다. ssi silent errors on;
\ # 역방향 프 록 시 부하 균형 설정 부분 \ # upstream 은 부하 서버 풀 을 표시 하고 이름 이 tomcat pool 인 서버 풀 을 정의 합 니 다 \ # 여 기 는 tomcat 의 주 소 를 표시 합 니 다. 여러 개의 tomcat 주 소 를 쓸 수 있 습 니 다 upstream tomcat pool{server 192.168.254.133: 8080 weight = 1 max fails = 2 fail timeout = 30s; server 192.168.254.132: 8080 weight = 1 max fails = 2 fail timeout = 30s; server 192.168.254.131: 8080 weight = 1 max fails = 2 fail timeout = 30s; \ # fail timeout 이 정의 하 는 시간 대 에 이 호스트 를 연결 하 는 실패 횟수 를 설정 하여 fail timeout 이 정의 하 는 시간 대 에 이 호스트 가 사용 할 수 있 는 지 여 부 를 단정 합 니 다.기본 값 으로 이 수 치 를 1. 0 값 으로 설정 하면 이 수 치 를 사용 하지 않 습 니 다. \ # 호스트 에 연 결 된 실패 횟수 를 지정 한 시간 내 에 설정 합 니 다. 이 횟수 를 초과 하면 호스트 를 사용 할 수 없다 고 생각 합 니 다. \ # 30s 내 에 두 번 시도 하 는 데 실 패 했 습 니 다. 호스트 를 사용 할 수 없다 고 생각 합 니 다!}
도 메 인 이름 기반 가상 호스트 server {
listen       80;   #    
server_name  www.web2.com;#           ,         
index index.html index.htm index.php  index.html;#                
root /home/www/web; #            

#charset koi8-r;

#access_log  logs/host.access.log  main;

location / {

root html;
    index index.jsp index.html index.htm;
}

location ~ \.(jsp|jspx|dp)?$ #  JSP      tomcat  
{
    proxy_set_header  Host $host;
    proxy_set_header  X-Real-IP $remote_addr; 
    proxy_pass http://tomcat_pool;#  tomcat  
}

#               tomcat
location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ 
 {
     expires  30d;
 }

 #   js,css      expries    ,       。
 location ~ .*\.(js|css)?$
 {
      expires  30d;  #       js,css  30 
 }

access_log  /usr/local/nginx/logs/ubitechtest.log main;#             

error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   html;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#

#  php         fcgi server
location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;  #     9000  
    fastcgi_index  index.php;   #      
    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    include        fastcgi_params;
    #include        fcgi.conf;
}

\ # # \ # # # \ # # \ # \ # \ # \ # \ # \ # # \ \ # # # \ \ # # # \ \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ \ # # \ \ # # \ \ # # # \ \ \ # # # # \ \ \ \ \ \ \ \ \ \ \ \ # # # # # \ # # \ \ \ \ \ \ \ \ \ \ # # # # # # \ \ \ # # # \ \ \ # # # \ \ \ # # # \ \ \ # # # # # \ \ \ \ # # # # # # \ \ \ \ # # # # # # # # \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \) {return 444;} if ($request uri ~ "(cost () | (concat ()") {return 444;} if ($request uri ~ "[+ | (% 20)] union [+ | (% 20)]") {return 444;}if ($request_uri ~ "[+|(%20)]and[+|(%20)]") {return 444;}if ($request_uri ~ "[+|(%20)]select[+|(%20)]") {return 444;}set $block_file_injections 0;if ($querystring ~ "[a-zA-Z0-9]=(..//?)+") {set $block_file_injections 1;}if ($querystring ~ "[a-zA-Z0-9]=/([a-z0-9_.]//?)+") {set $block_file_injections 1;}if ($block_file_injections = 1) {return 448;}set $block_common_exploits 0;if ($query_string ~ "(script.(>|%3E)") {set $block_common_exploits 1;}if ($query_string ~ "GLOBALS(=|[|\%[0-9A-Z]{0,2})") {set $block_common_exploits 1;}if ($query_string ~ "_REQUEST(=|[|\%[0-9A-Z]{0,2})") {set $block_common_exploits 1;}if ($query_string ~ "proc/self/environ") {set $block_common_exploits 1;}if ($querystring ~ "mosConfig[a-zA-Z_]{1,21}(=|\%3D)") {set $block_common_exploits 1;}if ($querystring ~ "base64(en|de)code(.*)") {set $block_common_exploits 1;}if ($block_common_exploits = 1) {return 444;}set $block_spam 0;if ($query_string ~ "\b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)\b") {set $block_spam 1;}if ($query_string ~ "\b(erections|hoodia|huronriveracres|impotence|levitra|libido)\b") {set $block_spam 1;}if ($query_string ~ "\b(ambien|blue\spill|cialis|cocaine|ejaculation|erectile)\b") {set $block_spam 1;}if ($query_string ~ "\b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)\b") {set $block_spam 1;}if ($block_spam = 1) {return 444;}set $block_user_agents 0;if ($http_user_agent ~ "Wget") {set $block_user_agents 1;}
Disable Akeeba Remote Control 2.5 and earlier
if ($http_user_agent ~ "Indy Library") {set $block_user_agents 1;}
Common bandwidth hoggers and hacking tools.
if ($http_user_agent ~ "libwww-perl") {set $block_user_agents 1;}if ($http_user_agent ~ "GetRight") {set $block_user_agents 1;}if ($http_user_agent ~ "GetWeb!") {set $block_user_agents 1;}if ($http_user_agent ~ "Go!Zilla") {set $block_user_agents 1;}if ($http_user_agent ~ "Download Demon") {set $block_user_agents 1;}if ($http_user_agent ~ "Go-Ahead-Got-It") {set $block_user_agents 1;}if ($http_user_agent ~ "TurnitinBot") {set $block_user_agents 1;}if ($http_user_agent ~ "GrabNet") {set $block_user_agents 1;}if ($block_user_agents = 1) {return 444;}
###end####
 location ~ ^/list {
     #          502、504、       ,        upstream             ,      。
     proxy_next_upstream http_502 http_504 error timeout invalid_header;
    # proxy_cache cache_one;
     #    HTTP            
     proxy_cache_valid  200 301 302 304 1d;
     #proxy_cache_valid  any 1d;
     #   、URI、     Web   Key ,Nginx  Key   ,              
     proxy_cache_key $host$uri$is_args$args;
     proxy_set_header Host  $host;
     proxy_set_header X-Forwarded-For  $remote_addr;
     proxy_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
     #proxy_ignore_headers Set-Cookie;
     #proxy_hide_header Set-Cookie;
     proxy_pass http://tomcat_pool;
     add_header      Nginx-Cache     "$upstream_cache_status  from  km";

      expires      1d;
    }

\ # ssl (https) 관련 설정 \ # server{\ # listen 13820; \ # 감청 포트 \ # server name localhost; \ # charset utf - 8; \ # gbk, utf - 8, gb 2312, gb 18030 은 다양한 인 코딩 인식 을 실현 할 수 있 습 니 다 \ # ssl on; \ # ssl certificate / ls / app / nginx / conf / mgmtxiangqiankys / server. crt; \ # 서비스의 인증서 \ # ssl certificate key / ls / app / nginx / mgmtxiangqiankys / server. key; \ # 서버 키 \ #ssl client certificate / ls / app / nginx / conf / mgmtxiangqiankeys / ca. crt; \ # 클 라 이언 트 인증서 \ # ssl session timeout 5m; \ # session 시간 초과 \ # ssl verify client on; \ # 계좌 개설 클 라 이언 트 인증서 검증 \ # ssl protocols SSLv 2 SSLv 3 TLSv 1; \ # SSL 프로 토 콜 허용 \ # ssl ciphers ALL:! ADH:! EXPORT 56: RC4 + RSA: + HIGH: + MEDIUM: + LOW: + SSLv 2: + EXP; \ # 암호 화 알고리즘 \ssl prefer server ciphers on; \ # 암호 화 알고리즘 시작 \ # access log / lw / logs / nginx / dataadmin. test. com. ssl. access. log access; \ # 로그 형식 및 로그 저장 경로 \ # error log / lw / logs / nginx / dataadmin. test. com. ssl. error. log; \ # 오류 로그 저장 경로 \ #}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#    deny  all;
#}

}
server {listen 80; server name bbs. yourdomain. com; location / {root / home / www / web / springmvc; \ # 사이트 의 자원 저장 경 로 를 설정 index. jsp index. htm index. html index. do welcome. jsp; \ # 방문 의 기본 홈 페이지 주 소 를 설정 합 니 다}
location ~ \.(jsp|jspx|dp)?$ #  JSP      tomcat  
{
    proxy_set_header  Host $host;
    proxy_set_header  X-Real-IP $remote_addr; 
    proxy_pass http://tomcat_pool;#  tomcat  
}
#               tomcat
location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ 
 {
     expires  30d;
 }

 location ~ .*\.(js|css)?$
 {
      expires  1h;
 }
access_log  /usr/local/nginx/logs/ubitechztt.log main;#                

error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   html;
}

}
another virtual host using mix of IP-, name-, and port-based configuration
##server {
listen 8000;
listen somename:8080;
server_name somename alias another.alias;
location / {
root html;
index index.html index.htm;
}
#}}

좋은 웹페이지 즐겨찾기