Nginx 입문 (2): 상용 기능 설정

10117 단어
1. 시작
nginx 의 설치 디 렉 터 리 에 들 어가 면 저 는 /etc/nginx 기본 nginx. config 설정 파일 이 있 습 니 다. 기본 설정 이 포함 되 어 있 고 기본 검색 /etc/nginx/conf.d/ 디 렉 터 리 에 conf 로 끝 나 는 모든 파일 을 설정 합 니 다. 즉, 필요 한 설정 이 있 으 면 새. conf 파일 을 만 들 면 됩 니 다.
다른 설정 을 하지 않 고 nginx 를 처음 시작 하려 면 설정 파일 의 위 치 를 정 해 야 합 니 다.
nginx -c /etc/nginx/nginx.conf

그리고 사이트 의 80 포트 를 방문 하면 됩 니 다!
중간 에 잘못 보고 하면 가장 자주 사용 하 는 동작, 즉 로 그 를 보 는 것 입 니 다.
tail -f /var/log/nginx/access.log

2. 파일 분석 설정 (분점 끝 에 주의)
user  nginx;
#    ,   cpu      
worker_processes  1;

#      ,   warn
error_log  /var/log/nginx/error.log warn;
#       pid
pid        /var/run/nginx.pid;

#    
events {
	#  worker       
    worker_connections  1024;
    #    (select,poll,epoll)
    use epool;
}

#        
http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;
		
		#       ,          server
        server{
        		#    ,  80
        		listen 80;
        		#            
                server_name www.xxxxx.top;
                #'/'        ,  location /1.html{}
                location / {
                	#       
                	root /soft/code/www;
                	#        
                	index index.html;
                }
                #        
                error_page 500 502 503 504 /50x.html
                #           location
                location = /50x.html{
                	root html
                }
                
                #include                ,       include    
                include /usr/local/nginx/conf/vhost/*;
        }

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    

"/etc/nginx/nginx.conf" 38L, 735C   

3. nginx 를 실행 하 는 프로필 테스트
설정 이 변경 되 었 다 면 nginx 가 설정 을 다시 불 러 오고 시작 할 수 있 도록 다음 작업 이 필요 합 니 다.
#    nginx          
nginx -c /etc/nginx/nginx.conf

#              
nginx -t

#        
nginx -s reload/restart

우 리 는 시작 한 후에 curl 을 통 해 Liux 에서 방문 결 과 를 직접 볼 수 있 습 니 다.
curl -v xxxxxxx.top

4. 로그 서비스 설정
로그 시각 화 페이지 를 설정 할 수 있 습 니 다. 고정된 주 소 를 방문 하여 nginx 의 실행 상황 을 얻 을 수 있 습 니 다.
4.1 설정 페이지
# server   ,          /mystatus  
location /mystatus{
        stub_status on;
        access_log off;
}


4.2 페이지 정보
다음은 방문 의http://xxxxxx.top/mystatus페이지 의 전시 정보
#  nginx      
Active connections: 2 

#server              
#accepts                
#  ,                
#handled requests          
server accepts handled requests
 18 18 17 

#reading        header   
#writing         header   
#waiting    keep-alive      ,             
Reading: 0 Writing: 1 Waiting: 1 

5. 다운로드 서비스 설정
다운로드 서 비 스 를 설정 할 수 있 습 니 다. 지정 한 서버 의 폴 더 를 통 해 이 폴 더 의 파일 을 nginx 를 통 해 브 라 우 저 에서 직접 다운로드 할 수 있 습 니 다.
location /down{
	#       
	#  :        /soft/package/src/down     
    root /soft/package/src;
    #    
    autoindex on;
    #      
    autoindex_localtime on;
    #        
    autoindex_exact_size off;
}

6. 접근 제한 및 요청 제한 설정
잦 은 요청 에 대해 서 는 nginx 를 통 해 서버 자원 을 너무 많이 사용 하지 않도록 제한 할 수 있 습 니 다.
참고:https://www.cnblogs.com/shouke/p/10157552.html
주: 여러 요청 이 하나의 TCP 연결 에 세 워 질 수 있 으 므 로 연결 제한 보다 요청 제한 이 유효 합 니 다.
6.1 성명 설정
# http           ,    location     
limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;

6.2 설정 페이지
location / {
    root /soft/code/www;
    index index.html;
	# location     
	#       ,       
    #limit_req zone=req_zone;
	#       ,       ,      burst,      503
    limit_req zone=req_zone burst=3 nodelay;

}

6.3 접근 제한
# location   
#deny      ,     ip all
#allow      
deny 222.173.61.94;
deny 39.128.149.179;
allow all;

주의: 논리 적 인 순서 가 있 는 것 을 거부 하고 허용 합 니 다. 이들 의 상하 위치 가 실 행 될 때 영향 을 줍 니 다.
예 를 들 어 deny all;allow 222.173.61.94;
모든 접근 을 거부 합 니 다.
7. 로그 인 인증
저 희 는 nginx 를 통 해 사용자 의 요청 에 로그 인 인증 차단 을 할 수 있 습 니 다.
7.1 설치 httpd - tools
[root@iZwz9ev02los7q1d71e7muZ nginx]# yum install httpd-tools

7.2 htpasswd 설명
[root@iZwz9ev02los7q1d71e7muZ nginx]# htpasswd --help
Usage:
	htpasswd [-cimBdpsDv] [-C cost] passwordfile username
	htpasswd -b[cmBdpsDv] [-C cost] passwordfile username password

	htpasswd -n[imBdps] [-C cost] username
	htpasswd -nb[mBdps] [-C cost] username password
	#                
 -c  Create a new file.
 -n  Don't update file; display results on stdout.
 -b  Use the password from the command line rather than prompting for it.
 -i  Read password from stdin without verification (for script usage).
 -m  Force MD5 encryption of the password (default).
 -B  Force bcrypt encryption of the password (very secure).
 -C  Set the computing time used for the bcrypt algorithm
     (higher is more secure but slower, default: 5, valid: 4 to 31).
 -d  Force CRYPT encryption of the password (8 chars max, insecure).
 -s  Force SHA encryption of the password (insecure).
 	#      
 -p  Do not encrypt the password (plaintext, insecure).
 	#      
 -D  Delete the specified user.
 -v  Verify password for the specified user.
On other systems than Windows and NetWare the '-p' flag will probably not work.
The SHA algorithm does not use a salt and is less secure than the MD5 algorithm.

7.3 htpasswd 사용
메모: 디 렉 터 리 를 가리 키 지 않 으 면 기본적으로 현재 디 렉 터 리 에. htpasswd 파일 을 생 성 합 니 다.
7.3.1 프로필 설정, 사용자 추가
[root@iZwz9ev02los7q1d71e7muZ /]# htpasswd -c /etc/nginx/auth_conf huang
#       ,               
htpasswd -b /etc/nginx/auth_conf       
#              
New password: xxxxxxx
Re-type new password: xxxxxxx

7.3.2 프로필 확인
[root@iZwz9ev02los7q1d71e7muZ /]# cat /etc/nginx/auth_conf
#       
xxx:$apr1$u6cnrOVn$tlA7/I8CMyng.zEYrMr1W.

7.3.3 loaction 에서 모듈 사용 하기
#        
auth_basic "please login!";
#        
auth_basic_user_file /etc/nginx/auth_conf;

다시 방문 하면 계 정과 비밀 번 호 를 입력 하 라 고 요구 합 니 다!
8. 정적 자원 서비스 설정
nginx 를 통 해 정적 자원 서버 를 설정 할 수 있 습 니 다. 파일 을 가 져 오 라 고 요청 할 때 nginx 는 일치 하 는 파일 접 두 사 를 통 해 폴 더 에서 파일 을 자동 으로 가 져 올 수 있 습 니 다.
8.1 location 에서 특정 접 두 사 를 차단 하도록 설정 합 니 다.
#      ,        
location ~ .*\.(gif|GIF|jpg|JPG|jpeg|JEPG|png|PNG)$ {
                gzip on;
                gzip_http_version 1.1;
                gzip_comp_level 2;
                gzip_types text/plain application/json application/x-javascript application/css application/xml application/xml+rss text/javascript     application/x-httpd-php image/jpeg image/gif image/png;
				#       
                root /soft/package/img;
 }


8.2 그림 전송 설정
#  gzip

#    
gzip on;
#http    
gzip_http_version 1.1;
#    
gzip_comp_level 2;
#       
gzip_types image/gif image/jpeg image/png image/svg+xml image/tiff image/vnd.wap.wbmp image/webp image/x-icon image/x-jng image/x-ms-bmp

주의: gziptype 이 란 은 nginx 설치 디 렉 터 리 에서 모든 종 류 를 찾 을 수 있 습 니 다.
[root@iZwz9ev02los7q1d71e7muZ package]# vim /etc/nginx/mime.types


types {
    text/html                                        html htm shtml;
    text/css                                         css;
    text/xml                                         xml;
    image/gif                                        gif;
    image/jpeg                                       jpeg jpg;
    application/javascript                           js;
    application/atom+xml                             atom;
    application/rss+xml                              rss;

    text/mathml                                      mml;
    text/plain                                       txt;
    text/vnd.sun.j2me.app-descriptor                 jad;
    text/vnd.wap.wml                                 wml;
    text/x-component                                 htc;

    image/png                                        png;
    image/svg+xml                                    svg svgz;
    image/tiff                                       tif tiff;
    image/vnd.wap.wbmp                               wbmp;
    image/webp                                       webp;
    image/x-icon                                     ico;
    image/x-jng                                      jng;
    image/x-ms-bmp                                   bmp;
							... ...

8.3 도 난 방지 체인 설치
#   location           ip/  
valid_referers none blocked 111.17.194.89;
#    ,     403
#  :if ()      
if ($invalid_referer){
    return 403;
}

주:
자원 서버 는 왕 이 나 7 우 cdn 같은 서비스 업 체 를 통 해 오입질 을 할 수 있 습 니 다. 반드시 자신의 서버 트 래 픽 과 성능 에 한계 가 있 기 때 문 입 니 다.
자세 한 내용 은 앞서 그 티 포 라 가 칠 우 운 을 사용 해 도상 을 만 든 글 을 참고 할 수 있다.
9. 역방향 에이전트
이것 은 nginx 에서 가장 자주 사용 하 는 기능 일 수 있 습 니 다. 포트 대 리 를 설정 하면 우 리 는 특정한 포트 에 대한 요청 대 리 를 다른 포트 로 할 수 있 습 니 다. 예 를 들 어 가장 흔히 볼 수 있 는 80 회전 8080 입 니 다.
9.1 설정 페이지
# location   
location / {
	#          http://www.qiuyeye.cn/index.html 
    proxy_pass http://www.qiuyeye.cn/index.html;
    include /etc/nginx/conf.d/proxy_params.conf;
}

9.2 설정 매개 변수
#      
proxy_redirect  default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;

proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;

좋은 웹페이지 즐겨찾기