Nginx 설정 정보 및 가상 호스트 생 성

1. Nginx 메 인 프로필 및 분석
Nginx 프로필 은 주로 4 부분 으로 나 뉜 다. main (전역 설정) 부분 에서 설정 한 명령 은 다른 모든 설정 에 영향 을 줄 것 이다.server (호스트 설정) 부분의 명령 은 주로 호스트 와 포트 를 지정 하 는 데 사 용 됩 니 다.upstream (부하 균형 서버 설정) 부분 명령 은 주로 부하 균형 에 사용 되 고 일련의 백 엔 드 서버 를 설정 합 니 다.location (URL 이 특정 위치 와 일치 하 는 설정) 부분 은 웹 페이지 위치 와 일치 합 니 다.4 자 간 의 관계: server 계승 main, location 계승 server, upstream 은 다른 설정 도 계승 하지 않 고 계승 되 지 않 습 니 다.
 
 #   Nginx Worker           ,   nobody    。    Nginx            ,       
 user  www www;
 #   Nginx        ,        10~12M  。        CPU           。
 # cpu         cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l   cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c      
 worker_processes  1;
 #           ,          :debug、info、notice、warn、error、crit
 error_log  logs/error.log;
 #error_log  logs/error.log  notice;
 #error_log  logs/error.log  info;
 #       id       
 pid        logs/nginx.pid;
 #   TCMalloc   ,        
 google_perftools_profiles /tmp/tcmalloc;
 #     worker   CPU,     Linux           ,       65535    Linux       ulimit -HSn 65535
 worker_rlimit_nofile 65535;
 
 events {
     #     Nginx     ,      select、poll、kqueue、epool、rtsig /dev/poll。  select poll         
     # kqueue epoll        ,    linux   ,    BSD  。
     use epoll;
     #             ,   1024,          Linux              ,     ulimit  
     #   ,        max_client=worker_processes*worker_connections,             4。
     worker_connections  65535;
 }
 
 http {
     #       ,   Apache  include
     include       mime.types;
     #            ,      
     default_type  application/octet-stream;
 
     #        ,   main      ,   access_log       
     #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;
 
     #       
     server_names_hash_bucket_size 128;
     client_header_buffer_size 32k;
     large_client_header_buffers 4 32k;
     #                 
     client_max_body_size 600m;
 
     #             , tcp_nopush tcp_nodelay       on        
     sendfile        on;
     tcp_nopush     on;
     tcp_nodelay  on;
 
     #   nginx     ,     
     server_tokens off;
 
     #                   ,    ,   75s
     #keepalive_timeout  0;
     keepalive_timeout  65;
     #               ,                  ,   60s
     #send_timeout 60;
 
     #    FastCGI     
     #      FastCGI     
     fastcgi_connect_timeout 300;
     #  FastCGI         
     fastcgi_send_timeout 300;
     #   FastCGI       
     fastcgi_read_timeout 300;
     #     FastCGI              
     fastcgi_buffer_size 64k;
     fastcgi_buffers 4 64k;
     #     fastcgi_buffers   
     fastcgi_busy_buffers_size 128k;
     #                   ,   fastcgi_buffers   
     fastcgi_temp_file_write_size 128k;
     #  FastCGI          、      、                 
     #fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
     #   FastCGI           。          CPU   ,    502     。
     #             ,        
     #fastcgi_cache TEST;
     #              ,         200 303    1  ,301    1 ,      1  。
     #fastcgi_cache_valid 200 302 1h;
     #fastcgi_cache_valid 301 1d;
     #fastcgi_cache_valid any 1m;
 
     #   Nginx HttpGzip  ,                 ,   /usr/local/nginx/sbin/nginx -V         (   V)
     #     gzip
     gzip  on;
     #             
     gzip_min_length 1k;
     gzip_buffers 4 16k;
     gzip_http_version 1.1;
     #    , 1 9,            ,   1
     gzip_comp_level 2;
     #        ,text/html     
     gzip_types text/plain application/x-javascript text/css application/xml;
     #               ,   off
     gzip_vary on;
 
     # server           ,                  ,    include    
     #            ,          403  
     server {
         listen       80 default;
         server_name _;
         #       404  500,          
         return 403;
     }
 
     #     include            ,           
     include vhosts/examples.com.conf;
     include vhosts/abc.com.conf;
 }

 2. Nginx 가상 호스트 설정 및 PHP 지원
 
conf 디 렉 터 리 아래 에 vhosts 디 렉 터 리 를 만 들 고 사이트 의 프로필 을 만 듭 니 다. 여 기 는 examples. com. conf 를 예 로 들 수 있 습 니 다.
 
[root@localhost ~]# cd /usr/local/nginx/
[root@localhost nginx]# mkdir -p conf/vhosts
[root@localhost nginx]# vim conf/vhosts/examples.com.conf

 만 든 examples. com. conf 프로필 은 다음 과 같 습 니 다.
 
 
#      server    
 server {
     #      ,              
     listen       80;
     #        ip      ,            
     server_name  examples.com www.examples.com;
     #                
     charset utf-8;
 
     #                 ,   main         
     #access_log  logs/examples.com.access.log  main;
 
     #             ,       (   nginx    ),        
     #root /www/examples.com
     #              
     #index index.html index.php
 
     #              ,   root index            
     #                ,     location / {}    
     location / {
         root   /www/examples.com;
         index  index.html index.php;
     }
 
     #   error_page               
     #                512k   ie      ie       
     #error_page  404              /404.html;
     error_page   500 502 503 504 /50x.html;
     location = /50x.html {
         root   html;
     }
 
     # nginx location      url    ,         ,         。
     #     location    nginx   、         。
     #              30 
     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
         expires 30d;
     }
     #  js css    1  
     location ~ .*\.(js|css)$ {
         expires 1h;
     }
 
     #           php   :
     #            php           8080      
     #location ~ \.php$ {
     #    proxy_pass   http://127.0.0.1:8080;
     #}
     #      php     FastCGI     ip     ,     PHP_FPM
     location ~ \.php$ {
         #       php    ,        
         root          /www/examples.com;
         #       php_fpm      
         fastcgi_pass   127.0.0.1:9000;
         #     
         fastcgi_index  index.php;
         #     php        ,   $fastcgi_script_name       ,               $document_root
         fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
         include        fastcgi_params;
     }
 
     #        .htaccess   ,    
     location ~ /\.ht {
         deny  all;
     }
 }

 마지막 으로 사이트 의 루트 디 렉 터 리 를 만 들 고 디 렉 터 리 권한 을 설정 합 니 다.
 
 
[root@localhost ~]# mkdir -p /www/examples.com
#     
[root@localhost ~]# chmod +w /www/examples.com
[root@localhost ~]# chown -R www:www /www/examples.com
#        php  
[root@localhost ~]# echo " phpinfo(); ?>" >> /www/examples.com/phpinfo.php

 이 럴 때 php - fpm 와 nginx 를 시작 하면 직접 접근 할 수 있 을 것 같 습 니 다.http://www.examples.com/phpinfo.php됐어.
 
3. php - fpm 와 fastcgi 최적화params 설정 정보
PHP - FPM 설정 파일 은 / usr / local / php / etc / php - fpm. conf 에 있 습 니 다. 다음은 자주 사용 하 는 설정 항목 에 대해 설명 합 니 다.
 

 127.0.0.1:9000
 
 0
 
 wwwwww
 
 128
 
 0s
 
 65535
 
 1024
 
 127.0.0.1

 fastcgi_param 프로필 은 / usr / local / nginx / conf / fastcgi 에 있 습 니 다.params 에서 그 중의 fastcgiparam SERVER_SOFTWARE nginx/$nginx_version;중 $nginxversion 제거, nginx 버 전 숨 기기.
 
 
 #fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
 fastcgi_param  SERVER_SOFTWARE    nginx;

 4. 흔히 볼 수 있 는 오류 와 해결 방법
 
먼저 nginx 가 시 작 된 후에 사이트 에 접근 할 수 없 거나 접근 하 는 데 오류 가 있 으 면 nginx (기본적으로 nginx 에 설 치 된 디 렉 터 리 의 logs 폴 더 아래) 나 phop - fpm (기본적으로 phop 루트 디 렉 터 리 의 logs / phop - fpm. log 파일 에 있 음) 의 로그 파일 을 먼저 봐 야 합 니 다. 자세 한 오류 정보 가 들 어 있 습 니 다.
1. php 파일 에 접근 할 때 페이지 에 'No input file specified' 알림 이 나타 나 고 정적 파일 은 정상 입 니 다.이것 은 사이트 설정 에서 php 확장 에 대한 분석 에서 fastcgiparam SCRIPT_FILENAME 뒤의 경로 에 오류 가 발생 하여 php - fpm 에서 php 파일 을 찾 을 수 없습니다. 해결 방법 은 $fastcgiscript_name 앞의 경 로 를 사이트 루트 디 렉 터 리 의 절대 경로 로 설정 하면 됩 니 다. 경 로 는 마지막 에 슬 래 쉬 /, 즉:
 
fastcgi_param  SCRIPT_FILENAME  /www/examples.com$fastcgi_script_name;

 php. ini 파일 의 cgi. fix 를pathinfo 항목 은 1 로 설정 되 어 있 지만 설정 을 하지 않 은 것 도 좋 습 니 다. nginx 버 전이 다 를 것 같 습 니 다.
 
2. [ERROR] fpm_unix_conf_wp (), line 124: please specify user and group other than root, pool 'default' 의 오 류 는 phop - fpm. log 로그 파일 에 나타 난 것 입 니 다. phop - fpm 사용자 와 사용자 그룹 을 설정 하지 않 았 거나 phop - fpm 사용자 나 사용자 그룹 을 nginx 와 같이 수정 하지 않 았 기 때 문 입 니 다.해결 방법 은 php - fpm. conf 설정 파일 의 user 와 group 을 수정 하 는 것 입 니 다. 기본 적 인 상황 에서 이 두 설정 은 설명 되 어 있 습 니 다.
 
 www
 www

 3. [error] 19075#0: *4 connect() failed (110: Connection timed out) while connecting to upstream, ......
 
이 오류 알림 은 nginx 가 php - fpm 로 전 송 될 때 연결 시간 이 초과 되 었 음 을 알려 주 는 것 입 니 다. 따라서 방 문 량 이 너무 많 으 면 시간 초과 설정 을 길 게 할 수 있 습 니 다.그러나 사이트 방문 이 많 지 않 거나 설정 을 시작 한 후에 이 오류 가 발생 하면 iptables 설정 에 문제 가 있 습 니 다.검증 방법 은 iptables 를 정지 (/ etc / init. d / iptables stop) 한 후 정상적으로 접근 하면 방화벽 설정 의 문제 임 을 설명 하고 방화벽 에 다음 과 같은 규칙 을 추가 하면 됩 니 다.
 
 iptables -I INPUT 2 -i lo -p all -j ACCEPT
 /etc/init.d/iptables save
 /etc/init.d/iptables start

 4. nginx 를 시작 할 때 나타 나 기 [emerg]: getpwnam("www") failed 잘못
 
이 오류 에서 getpwnam 중간 ww 는 다른 이름 일 수 있 습 니 다. 주요 원인 은 nginx 와 nginx 프로필 (nginx. conf) 에 설 치 된 사용자 와 사용자 그룹 이 존재 하지 않 기 때문에 해당 하 는 사용자 와 사용자 그룹 을 만 들 면 됩 니 다.
5. [emerg] 30558 \ # 0: setuid (500) failed (11: Resource temporary unavailable) 오류 정보 중의 setuid 중간 숫자 는 다른 숫자 입 니 다. 예 를 들 어 501, 502 등 입 니 다.이 오 류 는 한 걸음 한 걸음 조사 해 야 합 니 다. 상대 적 으로 복잡 합 니 다. 해결 방법 은 다음 과 같 습 니 다. 먼저 setuid 중간 에 있 는 숫자 에 따라 해당 하 는 사용자 가 존재 하 는 지 확인 하고 존재 하지 않 으 면 사용 자 를 만 듭 니 다.
 more /etc/passwd | grep 500
 #              nginx            ,    useradd           

 사용자 가 존재 한다 면 사용 합 니 다. ulimit -n 명령 은 서버 파일 설명자 가 얼마 인지 보고 기본 값 은 1024 이 며 사용 합 니 다. ps -U www | wc -l 명령 은 ww 사용자 가 사용 하 는 프로 세 스 의 수 를 봅 니 다. (ww 사용 자 를 자신의 것 으로 바 꾸 는 것 을 주의 하 십시오) 서버 파일 설명자 의 수 를 초과 하면 이 인 자 를 향상 시 켜 야 합 니 다. 구체 적 인 방법 은 nginx. conf 의 worker 입 니 다.rlimit_nofile、worker_connections 와 php - fpm. conf 파일 의 rlimitfiles 설정 항목 을 크게 설정 하면 65535 (최대 값) 로 직접 설정 할 수 있 습 니 다.그리고 서버 파일 설명자 의 크기 를 늘 려 야 합 니 다.두 가지 설정 방법 이 있 습 니 다.
 #      /etc/security/limits.conf  ,       
 echo '*   -   nofile  65535' >> /etc/security/limits.conf
 #         ulimit -HSn 65535   ,              php-fpm nginx   
 ulimit -HSn 65535
 cat >> /etc/rc.local <

 "ulimit - hsn" 뒤의 숫자 와 ngix. conf 의 worker 를 확인 해 야 합 니 다.rlimit_nofile、worker_connections 와 php - fpm. conf 파일 의 rlimitfiles 설정 항목 을 같은 숫자 로 설정 합 니 다.
위 에 설 치 된 설정 을 수정 한 후에 도 오류 가 있 으 면 축하합니다. 당신 의 인품 이 크게 향상 되 었 습 니 다. 이런 경 우 는 드 물 습 니 다. 먼저 재 부팅 을 했 는 지 확인 하 십시오. 재 부팅 을 한 후에 도 "ulimit - SH n 65535" 명령 을 / etc / profile 에 추가 할 수 있 습 니 다.
 echo "ulimit -SHn 65535" >> /etc/profile

 

좋은 웹페이지 즐겨찾기