2019-07-09

11930 단어
                         nginx        

(1) 여러 사 이 트 를 어떻게 구축 하 는 지 ww bbs blog
첫 번 째 과정: 여러 사이트 호스트 파일 만 들 기
[root@web01 ~]# cd /etc/nginx/conf.d/
[root@web01 conf.d]# cp www.conf bbs.conf
[root@web01 conf.d]# cp www.conf blog.conf
[root@web01 conf.d]# vim bbs.conf
server {
    listen       80;
    server_name  bbs.oldboy.com;
▽   location / {
        root   /html/bbs;
        index  index.html index.htm;
    }
"bbs.conf" 12L, 290C written                                  
[root@web01 conf.d]# vim blog.conf
server {
    listen       80;
    server_name  blog.oldboy.com;
        root   /html/blog;
        index  index.html index.htm;
    }   
    error_page   404 500 502 503 504  https://www.baidu.com/search/error.html;
    #location = /oldboy.jpg {
    #    root   /html;
    #}   
"blog.conf" 12L, 292C written                                 
[root@web01 conf.d]# cat www.conf bbs.conf blog.conf
server {
    listen       80;
    server_name  www.oldboy.com;
    location / {
        root   /html/www;
        index  index.html index.htm;
    }
    error_page   404 500 502 503 504  https://www.baidu.com/search/error.html;
    #location = /oldboy.jpg {
    #    root   /html;
    #}
}
server {
    listen       80;
    server_name  bbs.oldboy.com;
    location / {
        root   /html/bbs;
        index  index.html index.htm;
    }
    error_page   404 500 502 503 504  https://www.baidu.com/search/error.html;
    #location = /oldboy.jpg {
    #    root   /html;
    #}
}
server {
    listen       80;
    server_name  blog.oldboy.com;
    location / {
        root   /html/blog;
        index  index.html index.htm;
    }
    error_page   404 500 502 503 504  https://www.baidu.com/search/error.html;
    #location = /oldboy.jpg {
    #    root   /html;
    #}
}

두 번 째 과정: 서로 다른 사이트 디 렉 터 리 만 들 기 / 사이트 페이지 정보 index. html 만 들 기 (www. oldboy. com)
[root@web01 conf.d]# mkdir /html/{www,bbs,blog} -p
[root@web01 conf.d]# for name in {www,bbs,blog};do echo "$name.oldboy.com" >/html/$name/index.html;done
[root@web01 conf.d]# for name in {www,bbs,blog};do cat /html/$name/index.html;done
www.oldboy.com
bbs.oldboy.com
blog.oldboy.com
[root@web01 conf.d]# 

세 번 째 과정: DNS 분석 정보 설정
10.0.0.7   www.oldboy.com  bbs.oldboy.com blog.oldboy.com

네 번 째 과정: nginx 프로그램 을 다시 시작 합 니 다.
컴 파일 설치 재 부팅 방법:
[root@web03 ~]# /application/nginx/sbin/nginx
[root@web03 ~]# ps -ef|grep nginx
root       6156      1  0 16:34 ?        00:00:00 nginx: master process /application/nginx/sbin/nginx
nobody     6157   6156  0 16:34 ?        00:00:00 nginx: worker process
root       6161   6100  0 16:35 pts/2    00:00:00 grep --color=auto nginx
[root@web03 ~]# 

yum 설치:
방법 1: systemctl 명령 으로 nginx 프로그램 을 다시 시작 합 니 다.
[root@web01 conf.d]# systemctl restart/reload nginx

방법 2: nginx 명령 을 이용 하여 nginx 프로그램 을 다시 시작 합 니 다.
nginx
nginx -s reload
nginx -t #        

문법
1-          /      
2-              
3-             
PS:          

보충: 사이트 페이지 이상 배열 사고
01: DNS 분석 정 보 를 검사 합 니 다.
[c:\~]$ ping bbs.oldboy.com

   Ping www.oldboy.com [10.0.0.7]    32      :
   10.0.0.7    :   =32   <1ms TTL=64
   10.0.0.7    :   =32   <1ms TTL=64

10.0.0.7   Ping     :
       :     = 2,    = 2,   = 0 (0%   ),
         (      ):
       = 0ms,   = 0ms,   = 0ms

02: HTTP 요청 정보 확인 (패키지 검사)
03: HTTP 응답 정보 검사 (패키지 검사)
(2) 사이트 페이지 방문 방법
도 메 인 이름 기반 접근
포트 기반 접근
[root@web01 conf.d]# vim www.conf
server {
    listen       8080;    #     
    server_name  www.oldboy.com;
    location / {
        root   /html/www;
        index  index.html index.htm;
    }
    error_page   404 500 502 503 504  https://www.baidu.com/search/error.html;
    #location = /oldboy.jpg {
    #    root   /html;
    #}
}
"www.conf" 12L, 292C written
[root@web01 conf.d]# systemctl reload nginx

접근 원리:
01. 지정 한 IP 주소 와 연결 하기 --- 10.0.0.7
02. 지정 한 포트 에 요청 하기 --- 80
03. 80 포트 와 일치 하 는 호스트 정 보 를 찾 습 니 다.
04. 사용자 와 일치 하 는 요청 호스트 정보
주소 기반 접근
[root@web01 conf.d]# cat www.conf
server {
    listen       172.16.1.7:80;
    server_name  www.oldboy.com;
    location / {
        root   /html/www;
        index  index.html index.htm;
    }
    error_page   404 500 502 503 504  https://www.baidu.com/search/error.html;
    #location = /oldboy.jpg {
    #    root   /html;
    #}
}
[root@web01 conf.d]# 

주의사항: nginx 프로그램 이 IP 주소 로 설 계 된 변경 사항 은 서 비 스 를 다시 시작 해 야 합 니 다 (부 드 러 운 재 부팅 이 아 닙 니 다)
[root@web01 conf.d]# systemctl reload nginx
[root@web01 conf.d]# curl 172.16.1.7
bbs.oldboy.com
[root@web01 conf.d]# netstat -lntup|grep nginx
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      1833/nginx: master  
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1833/nginx: master  

해결 방법: restart 로 서 비 스 를 다시 시작 합 니 다.
[root@web01 conf.d]# systemctl restart nginx
[root@web01 conf.d]# netstat -lntup|grep nginx
tcp        0      0 172.16.1.7:80           0.0.0.0:*               LISTEN      1892/nginx: master  
[root@web01 conf.d]# curl 172.16.1.7
www.oldboy.com

(3) nginx 를 이용 하여 사이트 디 렉 터 리 색인 표시
첫 번 째 과정: 첫 페이지 파일 을 삭제 합 니 다.
[root@web01 www]# ll
total 4
-rw-r--r-- 1 root root 15 Jul 10 16:33 index.html
[root@web01 www]# mv index.html{,.bak}
[root@web01 www]# ll
total 4
-rw-r--r-- 1 root root 15 Jul 10 16:33 index.html.bak

두 번 째 과정: 프로필 추가 명령 을 수정 하고 디 렉 터 리 색인 을 만 듭 니 다.
server {
    listen       80;
    server_name  www.oldboy.com;
    access_log  /var/log/nginx/access_oldboy.log  oldboy;
    location / {
        root   /html/www;
        index  index.html index.htm;
        autoindex  on;                     ---        ,             
    }
    error_page   404 500 502 503 504  https://www.baidu.com/search/error.html;
    #location = /oldboy.jpg {
    #    root   /html;
"www.conf" 14L, 371C written   

(4) nginx 를 이용 하여 네트워크 보안 액세스 제 어 를 실현
(1) 사용자 의 방문 정 보 를 바탕 으로 제어
첫 번 째 과정: 사이트 디 렉 터 리 환경 images 배치 av 금지 허용
images          oldboy.jpg
av              oldboy.html
[root@web01 conf.d]# cd /html/www/
[root@web01 www]# mkdir images av

두 번 째 과정: 프로필 편집
[root@web01 conf.d]# cat www.conf
server {
    listen       80;
    server_name  www.oldboy.com;
    access_log  /var/log/nginx/access_oldboy.log  oldboy;
    location / {
        root   /html/www;
        index  index.html index.htm;
        autoindex  on;
        charset  UTF-8;
    }
    location /images {
     allow all;
     root   /html/www;
     index  oldboy.jpg index.html index.htm;
    }
    location /av {
     allow  10.0.0.1;
     deny all;
     root   /html/www;
    }
}
[root@web01 conf.d]# 

(2) 사용자 의 인증 정 보 를 바탕 으로 제어
첫 번 째 과정: 암호 파일 정보 만 들 기
[root@web01 conf.d]# htpasswd -bc /etc/nginx/nginx.password oldboy oldboy123
Adding password for user oldboy
[root@web01 conf.d]# cat /etc/nginx/nginx.password 
oldboy:$apr1$KzlvElme$jIoFDiewj3Vv50hrxLpW41
[root@web01 conf.d]# 

두 번 째 과정: 호스트 프로필 작성
[root@web01 conf.d]# cat www.conf
server {
    listen       80;
    server_name  www.oldboy.com;
    access_log  /var/log/nginx/access_oldboy.log  oldboy;
    auth_basic "oldboy61";
    auth_basic_user_file /etc/nginx/nginx.password;
    location / {
        root   /html/www;
        index  index.html index.htm;
        autoindex  on;
        charset  UTF-8;
    }
}

PS:500 Internal Server Error
01: 작 성 된 코드 정보 가 정확 하지 않 습 니 다.
02: 웹 서비스 권한 에 문제 가 있 음
[root@web01 nginx]# chown www nginx.password
      

(5) nginx 를 이용 하여 사이트 상태 모니터링 실현
첫 번 째 과정: 모니터링 사이트 호스트 설정 파일 작성
[root@web01 conf.d]# cp www.conf stat.conf
[root@web01 conf.d]# vim stat.conf
server {
    listen       80;
    auth_basic "oldboy61";
    listen       80;
    server_name  stat.oldboy.com;
    location / {
        stub_status ;
    }   
}   

페이지 모니터링 정보
Active connections: 1 --- 총 활성화 병렬 링크 수
accepts --- 총 수신 링크 수 정보
handled --- 총 처리 링크 수 정보
전체 요청 수량
읽 기: 읽 기 요청 메시지 수량
쓰기: 답장 응답 메시지 수량
대기 열: 대기 열
지정 한 정 보 를 꺼 내 감시 하 다.
[root@web01 conf.d]# curl -H host:stat.oldboy.com 172.16.1.7 2>/dev/null|awk 'NR==3{pront $1}'

(6) nginx 프로그램 로그 설명
오류 로그: 기록 서비스 에서 자주 발생 하 는 오류
01: 서비스 실행 오류 정보
02: 사용자 가 페이지 에 접근 하 는 중 오류 발생
설정 방법:
error_log /var/log/nginx/error,log warn (      )
debug  ---                
info   ---    
notice ---    
warn   ---    
error  ---    
crit   ---    
alertr ---       
emerg  ---                

방문 로그: 사용자 방문 정 보 를 기록 합 니 다.
01: 사용자 가 사이트 에 방문 하 는 어떤 정 보 를 기록 합 니까?
02: 방문 사이트 사용자 정보 기록
설정 방법:
[root@web01 images]# cat /etc/nginx/nginx.conf
user  www;
worker_processes  2;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
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"';

    log_format   oldboy '$remote_addr [$time_local] "$request" oldboy'
    #access_log  /var/log/nginx/access_oldboy.log  oldboy;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  0;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}
[root@web01 images]# 

nginx 기본 변수
$remote_addr  ----        ip  
$remote_user  ----          0
[$time_local] ----      
$request      ----       
$status       ----     
$body_bytes_sent  ----      (  )      
 $http_referer ----             (     )

삼 nginx 프로그램 영역 모듈 - location
기능: 서로 다른 uri 정보 와 일치 하여 해당 하 는 처 리 를 합 니 다.
사용 방법:
[root@web01 conf.d]# cat www.conf
server {
    listen       80;
    server_name  www.oldboy.com;
    location = / {                        
    return  301;
    }

    location / {                         
        return  302;
    }
    
    location /documents/ {                
        return  404;
    }
    
    location ^~ /images/ {                
        return  502;
    }
    
    location ~* \.(gif|jpg|jpeg)$ {       
        return  520;
    }
}  
[root@web01 conf.d]# 

규범 사이트 디 렉 터 리 구조 정보
[root@web01 conf.d]# cat www.conf
server {
    listen       80;
    server_name  www.oldboy.com;
    location ~* \.jpg$ {                     
        root  /html/www/jpg;
    }

    location ~* \.png$ {                         
        root /html/www/png;
    }
    
    location / {                
        root  /html;
        index index.html;
    }
}  
[root@web01 conf.d]# 

4. nginx 프로그램 재 작성 기능 설명 rewrite url / uri / 의사 정적
(1) 점프 설정 에서 last 와 break 의 차이 점 비교 예시
[root@web01 conf.d]# cat www.conf
server {
       listen            80;
       server_name       www.oldboy.com;
       root              /html;
       location  ~ ^/break/ {
           rewrite  ^/break/  /test/  break;
       }
       location  ~ ^/last/  {
           rewrite  ^/last/  /test/  last;
       }
       location   /test/ {
           default_type   application/json;
           return 200 'ok';
       }
    }

좋은 웹페이지 즐겨찾기