nginx 의 고급 확장 프로그램

13406 단어 nginx 고급
nginx.conf 설정 설명

  
  
  
  
  1. user   www www; 

  2.  Nginx   

  3. worker_processes 8; #[ debug | info | notice | warn | error | crit ] 

  4. error_log /data1/logs/nginx_error.log crit; pid 

  5. /usr/local/webserver/nginx/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by this process. 

  6. worker_rlimit_nofile 65535; 

  7.  nginx  , (ulimit 

  8. -n) nginx  ,  nginx  ,  ulimit -n 。 

  9. # use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; 

  10. events use epoll;   

  11. worker_connections 65535;  ( =  x  ) #  http   

  12. http include 

  13. mime.types;   

  14. default_type application/octet-stream; #  

  15. #charset gb2312;   

  16. server_names_hash_bucket_size 128; #  hash   

  17. client_header_buffer_size 32k;   

  18. large_client_header_buffers 4 32k;   

  19. client_max_body_size 8m;   

  20. sendfile on; #  

  21. tcp_nopush 

  22. on;   

  23. tcp_nodelay on;   

  24. keepalive_timeout 60;   

  25. #FastCGI  -- , .  fastCGI   

  26. :http://www.fastcgi.com 

  27. fastcgi_connect_timeout 300; 

  28. fastcgi_send_timeout 300; 

  29. fastcgi_read_timeout 300; 

  30. fastcgi_buffer_size 64k; 

  31. fastcgi_buffers 4 64k; 

  32. fastcgi_busy_buffers_size 128k; 

  33. fastcgi_temp_file_write_size 128k; 

  34. gzip on; 

  35. gzip_min_length 1k; #  

  36. gzip_buffers 

  37. 4 16k; #  

  38. gzip_http_version 1.0; 

  39. # (  1.1,  squid2.5   1.0 

  40. gzip_comp_level 2;   

  41. gzip_types 

  42. text/plain application/x-javascript text/css application/xml; 

  43. ,  text/html  , ,  

  44. ,  warn 

  45. gzip_vary on; 

  46. #limit_zone crawler $binary_remote_addr 10m; server listen   80; 

  47. server_name www.opendoc.com.cn 

  48. index index.html index.htm index.php; 

  49. root /data0/htdocs/opendoc; 

  50. location ~ .*\.(php|php5)?$ #fastcgi_pass unix:/tmp/php-cgi.sock; 

  51. fastcgi_pass 127.0.0.1:9000; 

  52. fastcgi_index index.php; 

  53. include fcgi.conf; #  

  54. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ expires 30d; #  JS CSS   

  55. location ~ .*\.(js|css)?$ expires  1h; #  

  56. log_format access '$remote_addr - $remote_user [$time_local] "$request" ' 

  57. '$status $body_bytes_sent "$http_referer" '  '"$http_user_agent" $http_x_forwarded_for'; 

  58. #

  59. access_log /data1/logs/access.log access; 


nginx 모 바 일 기기 사용 자 를 판단 하 는 방법
두 가지 방법 이 있어 요.
하 나 는 언어 로 판단 하 는 것 이다. 예 를 들 어 phop 을 사용 하 는 것 이다. $_SERVER['User-Agent']  

  
  
  
  
  1. <?php

  2. function is_mobile(){  

  3.     // returns true if one of the specified mobile browsers is detected  

  4.     $regex_match="/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|";  

  5.     $regex_match.="htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|";  

  6.     $regex_match.="blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|";      

  7.     $regex_match.="symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|";  

  8.     $regex_match.="jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220";  

  9.     $regex_match.=")/i";          

  10.     return isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE']) or preg_match($regex_match, strtolower($_SERVER['HTTP_USER_AGENT']));  

  11. }  

  12. /*  

  13. allow the user a way to force either the full or mobile versions of the site - use a GET parameter on requests:  

  14. include likes to both versions of the site w/ the special force mode parameters, 'mobile' and 'full':  

  15. <ahref="View'>http://www.php100.com/?mobile">View Mobile Site</a>

  16. <ahref="View'>http://www.php100.com/?full">View Full Site</a>

  17. Always check for 'mobile' or 'full' parameters before accounting for any User-Agent conditions:  

  18. */  

  19. if ($_GET['mobile']) {  

  20.  $is_mobile = true;  

  21. }  

  22. if ($_GET['full']) {  

  23.  $is_mobile = false;  

  24. }  

  25. if($is_mobile) {  

  26.     //it's a mobile browser, do something  

  27.     header("Location: http://wap.baidu.com");  

  28. } else {  

  29.     //it's not a mobile browser, do something else  

  30.     header("Location: http://www.baidu.com");  

  31.     // or instead of a redirect, simply build html below  

  32. }  

  33. ?>


또 하 나 는 nginx 로 판단 하 는 거 예요.

  
  
  
  
  1. if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) { 

  2. //  , rewrite  


 
일부 장치 가 인식 되 지 않 았 을 수도 있 습 니 다. 분석 로 그 를 보고 나 서... User - agent 키 워드 를 if 에 써 주세요.
 
nginx 의 프로필 if 문 구 는 '그리고' 또는 '와 같은 다 중 조건 판단 을 지원 하지 않 습 니 다.어떤 상황 에서 우 리 는 if 문 구 를 여러 가지 조건 으로 판단 해 야 한다. 그러면 어떻게 실현 할 것 인가?우 리 는 nginx 의 set 문 구 를 이용 하여 변 수 를 설정 하 는 방법 으로 해결 할 수 있 습 니 다.
우리 가 옳다 고 가정 해 봐. /123/ 경 로 는 rewrite 를 진행 하지만 동시에 제거 해 야 합 니 다. /123/images/ 경로 가 이 경로 에 대해 rewrite 를 하지 않 으 면 아래 의 해결 방법 을 사용 할 수 있 습 니 다.

  
  
  
  
  1. set $doRewrite "0"; 

  2. if ($request_uri ~ ^/123/) { 

  3. set $doRewrite "1"; 

  4. if ($request_uri ~ ^/123/images/) { 

  5. set $doRewrite "0"; 

  6. if ($doRewrite = "1") { 

  7. // do rewrite 



또 하나의 실례 가 있다
이 말 은   진짜 ip 를 판단 하고 ip 에 따라 조작 을 합 니 다 ~  맵 맵

  
  
  
  
  1. map $http_x_forwarded_for $deny_access { 

  2.     default     0; 

  3.     1.2.3.4     1; 

  4.     1.2.3.5     1; 

  5.     1.2.3.6     1; 

  6. if ($deny_access = 1) { 

  7.     return 403; 


 
도 난 방지 체인 의 일부 설정

  
  
  
  
  1. location ~* \.(gif|png|jpg|bmp|swf|flv)$ { 

  2.     valid_referers none blocked www.ruifengyun.com ruifengyun.com; 

  3.     if ($invalid_referer) { 

  4.             return 403; 

  5.     } 


이상 의 예 는 확장 자 를 실현 할 수 있 습 니 다. gif, png, jpg, bmp, swf, flv 의 url 도 난 방지.다른 url 이 도 둑 맞 는 것 을 방지 하려 면 해당 접 두 사 를 추가 하면 됩 니 다.
되다 반환 하 다 403 바꾸다 #rewrite ^/ http://ruifnegyun.com/404.jpg;     이렇게 하면 다른 방법 으로 자신의 사 이 트 를 홍보 할 수 있다.
nginx 의 속도 제한 규칙
 
설정 이 간단 합 니 다. 3 줄 만 있 으 면 됩 니 다.

  
  
  
  
  1. http{ 

  2.     …… 

  3.     limit_zone one $binary_remote_addr 10m; 

  4.     …… 

  5.     server { 

  6.         location / { 

  7.             …… 

  8.             limit_conn one 2; 

  9.             limit_rate 40k; 

  10.         } 

  11.     } 


limitzone 은 모든 IP 에 대해 session 상 태 를 저장 하 는 용 기 를 정의 합 니 다.이 예제 에 서 는 원 이라는 10m 크기 의 용 기 를 정의 합 니 다. 이 이름 은 뒤의 limit 에 있 습 니 다.conn 에서 사용 합 니 다.limit_conn 은 모든 방문객 에 게 두 개의 링크 만 만 만 들 수 있 도록 지정 합 니 다. limitrate 는 모든 링크 의 속도 가 40K 를 초과 하지 않도록 제한 합 니 다.따라서 상기 설정 은 사용자 가 이 사이트 에 접근 하 는 것 을 제한 합 니 다. 총 속도 상한 선 은 80K 입 니 다.

좋은 웹페이지 즐겨찾기