Nginx 몇 가지 용법

9411 단어
nginx 의 핵심 기능 은 다음 과 같은 몇 가지 가 있 습 니 다. 1. http 는 웹 서버 와 역방향 프 록 시 2. mail 을 메 일 서버 3. stream 으로 부하 균형 을 이 룰 수 있 습 니 다. 다음 nginx 의 몇 가지 용법 을 보 여 드 리 겠 습 니 다.
nginx 역방향 에이전트
nginx 역방향 프 록 시 는 두 가지 모델 이 있 습 니 다. 1. 첫 번 째 는 백 엔 드 서버 가 httpd + phop 모듈 로 이 루어 진 것 입 니 다. 바로 nap (nginx + httpd / phop module) 입 니 다. 이 환경 에서 백 엔 드 서버 는 httpd 이 고 감청 포트 는 기본적으로 80 입 니 다. nginx 는 httpd 의 클 라 이언 트 로 존재 합 니 다. 사용자 가 요청 을 보 낼 때 nginx 는 사용자 의 요청 을 받 은 다음 에 사용자 의 요청 을 읽 습 니 다.또한 사용자 의 요청 데 이 터 를 판단 하고 사용자 의 요청 에 따라 새로운 요청 을 다시 생 성하 여 해당 하 는 백 엔 드 서버 에 보 내 는 실현 절차: (1) 환경: nginx 서버 172.16.200.102, 백 엔 드 ap (httpd + phop) 서버 172.16.104.모든 가상 컴퓨터 의 iptables 와 selinux (2) 설정 역방향 프 록 시 서버 를 닫 습 니 다.
[root@localhost ~]# yum -y install nginx    #  nginx
[root@localhost ~]# rpm -qi nginx              #        1.10.2   nginx
[root@localhost ~]# service nginx start      #  nginx
Name        : nginx                        Relocations: (not relocatable)
Version     : 1.10.2                            Vendor: Fedora Project
...
[root@localhost ~]# vim /etc/nginx/conf.d/default.conf
        listen    defalut_server,default    server    server。       default_server  ,           server   server,         default  
  listen       80 ;
  listen       [::]:80;
[root@localhost ~]# vim /etc/nginx/conf.d/nap.conf    #nginx    http     /etc/nginx/conf.d/*.conf  ,            server 
server {
        listen 80 default;    #  80  
        server_name www.feng.com;   #    
        location / {
        index index.php index.html
        }
        location ~* \.html$ {                 # .html              
        root /usr/share/nginx/html
        }
        location ~* \.php$ {
                proxy_pass http://172.16.200.104;    #  proxy_pass              172.16.200.104,  ,             ,                       ,      ,        。locattion         ,proxy_pass    URL       /,     。
        }
}
[root@localhost ~]# nginx -t    #          
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost conf.d]# nginx -s reload    #               ,      server  
[root@localhost conf.d]# echo "172.16.200.102 index.html" > /usr/share/nginx/html/index.html    #      ,            

(3) 배경 서버 설정
[root@localhost html]# yum -y install httpd php   #  httpd php
[root@localhost html]# vim /var/www/html/index.php    #      ,      


(4) 테스트 는 브 라 우 저 를 사용 하여 172.16.200.102 / index. phop 페이지 를 방문 하여 phop 상태 페이지 를 보고 실험 성공 을 증명 합 니 다.
2. 두 번 째 는 nginx 에 phop - fpm 를 더 해 이 루어 진 것 입 니 다. phop - fpm 는 일정한 웹 서비스 기능 을 가지 고 있 습 니 다. phop - fpm 를 동적 콘 텐 츠 서버 (1) 실험 환경 으로 직접 사용 할 수 있 습 니 다. 프 록 시 서버 는 172.16.200.102 이 고 백 엔 드 서버 는 172.16.200.103 입 니 다. 다음 실험 환경 을 연결 하여 nap. conf 중의 listen 행 default 을 삭제 합 니 다.(2) 102 서버 에 / etc / nginx / conf. d 디 렉 터 리 에 파일 np. conf 를 다시 만 들 고 이 파일 에 새 server 를 만 듭 니 다.
[root@localhost conf.d]# vim np.conf
server {
        listen 80 default;
        server_name www.feng.com;
        location / {
                index index.php index.html;
        }
        location ~* \.html$ {
                root /usr/share/nginx/html;
        }
        location ~* \.php$ {
                fastcgi_pass 172.16.200.103:9000;
                fastcgi_index index.php;    #        
                fastcgi_param SCRIPT_FILENAME /app/html$fastcgi_script_name;    #        php-fpm  ,             ,                      。
                include fastcgi_params;    #fastcgi_params         ,         ,           。
        }
}
[root@localhost conf.d]# nginx -t
[root@localhost conf.d]# nginx -s reload

(3) 백 엔 드 서버 설정
[root@localhost html]# yum -y install php-fpm
[root@localhost html]# vim /etc/php-fpm.d/www.conf   #        
listen = 9000    #             9000  
listen.allowed_clients = 172.16.200.102    #        ,          ip

설정 이 완료 되면 시작 할 수 있 습 니 다.
[root@localhost html]# service php-fpm start
Starting php-fpm:                                          [  OK  ]
[root@localhost html]# ss -tnlp|grep 9000
LISTEN     0      128                       *:9000                     *:*      users:(("php-fpm",3488,7),("php-fpm",3489,0),("php-fpm
",3490,0),("php-fpm",3491,0),("php-fpm",3492,0),("php-fpm",3494,0))

프 록 시 서버 의 지정 한 위치 에 대응 하 는 테스트 파일 을 작성 합 니 다.
[root@localhost html]# mkdir -p /app/html
[root@localhost html]# vim /app/html/index.php


(4) 테스트 용 브 라 우 저 로 172.16.200.102 / index. php 를 방문 하여 테스트 페이지 가 나타 나 실험 성공 을 증명 합 니 다.
nginx 캐 시
nginx 의 캐 시 기능 은 역방향 프 록 시 에서 이 루어 집 니 다. 첫 번 째 실험 nap. conf 파일 에 캐 시 내용 을 추가 하고 np. conf 파일 의 default 를 nap. conf 에 캐 시 저장 방식 으로 key / values 로 바 꿉 니 다. key 는 지정 한 URL 세그먼트 를 hash 를 거 쳐 같은 길이 의 문자열 로 메모리 에 저장 합 니 다.한편, values 는 URL 에 대응 하 는 내용 입 니 다. 디스크 에 저 장 된 계 획 된 디 렉 터 리 에 저 장 됩 니 다. 디 렉 터 리 구 조 는 hash 완 료 된 key 값 의 뒤에서 몇 자 를 하나의 디 렉 터 리 구조 로 구성 합 니 다. 예 를 들 어 디 렉 터 리 구조 levels = 2: 1: 1 을 설정 하면 첫 번 째 디 렉 터 리 는 hash 값 의 두 글자 로 구성 되 고 모든 문 자 는 16 자리 이 며 두 문 자 는 256 자리 입 니 다.1. / etc / nginx / nginx. conf 에서 캐 시 를 정의 합 니 다. http 세그먼트 에 만 쓸 수 있 습 니 다. 전역 세그먼트 에 쓰 면 오류 가 발생 할 수 있 습 니 다.
[root@localhost nginx]# vim /etc/nginx/nginx.conf
proxy_cache_path /data/ levels=2:1:1 keys_zone=procache:10m;

2. 캐 시 를 참조 하여 nap. conf 파일 로 돌아 가 방금 정 의 된 캐 시 를 참조 하여. php $의 location 세그먼트 로 수정 하고 다음 내용 을 추가 합 니 다.
 proxy_cache procache;   #             ,procache                
 proxy_cache_valid 200 301 302 1h;   #          
 proxy_cache_use_stale timeout;    #                      。
 proxy_cache_methods GET HEAD;    #             。

문법 을 검사 하고 프로필 을 다시 불 러 옵 니 다.
[root@localhost nginx]# nginx -t
[root@localhost nginx]# nginx -s reload

3. 브 라 우 저 에서 의 접근 검증http://172.16.200.102/index.php두 번 더 방문 한 다음 정 의 된 디 렉 터 리 에 하위 디 렉 터 리 가 생 성 되 었 는 지 확인 하고 캐 시 성공 을 증명 합 니 다.
[root@localhost nginx]# tree /data/
[root@localhost nginx]# tree /data
/data
├── 59
│   └── f
│       └── b
│           └── 49bbcf840980a010f6e71e9fb70bbf59
├── 6b
│   └── 7
│       └── e
│           └── 9265fb1fcece376063e2b462a4c7e76b
└── 8e
    └── e
        └── 1
            └── d19be2f40be92a1508d8bd9f56271e8e

캐 시 성공
스케줄 링
nginx 는 두 가지 스케줄 링 방식 을 사용 할 수 있 습 니 다.
  • 하 나 는 7 층 스케줄 링 이 고 원리 도 에이전트 의 원리 이다. 그러나 기능 이 같은 백 엔 드 호스트 를 하나의 그룹 으로 설정 한 다음 에 요청 메 시 지 를 이 그룹 에 보 내 는 것 이다.그룹 내 에서 스케줄 링 알고리즘 을 정의 하고 특정한 노드 로 스케줄 링 합 니 다.
  • 다른 하 나 는 lvs 와 같은 4 층 스케줄 링 입 니 다. ip 포트 를 통 해 직접 전송 요청 을 합 니 다. 이런 스케줄 링 은 7 층 데이터 패 키 지 를 식별 할 수 없 기 때문에 URL 등 방식 으로 스케줄 링 을 할 수 없습니다. 기능 이 상대 적 으로 단일 합 니 다.그러나 4 층 스케줄 링 이기 때문에 각종 TCP 프로 토 콜 의 패 킷 은 이 기능 을 통 해 전송 할 수 있다.

  • 7 층 스케줄 링
    7 층 스케줄 링 의 기능 은 http 방식 을 통 해 이 루어 지기 때문에 http 상하 문 에 정 의 된 것 이 므 로 먼저 정 의 를 내 린 다음 에 사용 해 야 한다. 1. 실험 환경: 스케줄 러 172.16.200.102, 백 엔 드 서버 172.16.200.104 와 172.16.200.105.백 엔 드 서버 에 httpd 2 를 설치 합 니 다. 메 인 프로필 / etc / nginx / nginx. conf 에 정의 하고 http 컨 텍스트 에 다음 과 같은 내용 을 추가 합 니 다.
    upstream app {
            server 172.16.200.104  weight=1 max_fails=5 fail_timeo
    ut=5s;        server 172.16.200.105  weight=1 max_fails=5 fail_timeo
    ut=5s;        }
    }
    

    3. nap. conf 파일 에서 location 세그먼트 에서 proxy 호출pass 후 URL 의 ip 주 소 를 주 설정 파일 에서 정의 하 는 그룹 이름 으로 설정 합 니 다.
    location ~* \.php$ {
                    proxy_pass http://app;
                   ....
    }
    

    4. 172.16.200.104 와 172.16.200.105 에 테스트 파일 추가
    [root@localhost html]# echo "172.16.200.104" > /var/www/html/i
    ndex.php    #104     
    [root@localhost html]# echo "172.16.200.105" > /var/www/html/i
    ndex.php    #105     
    

    5. 테스트 용 브 라 우 저 로 172.16.200.102 를 방문 하여 계속 새로 고침 하거나 간단 한 for 순환 for i in {1..10};do curl 172.16.200.102;done 을 쓰 면 172.16.200.104 와 105 두 주 소 를 얻 고 교체 되 며 나타 납 니 다. 기본 값 은 rr 모드 이기 때문에 저희 도 가중치 를 주지 않 았 습 니 다.
    4 층 스케줄 링
    4 층 스케줄 링 은 메 인 설정 파일 에서 stream {} 상하 문 에서 정 의 된 것 입 니 다. 7 층 과 비슷 합 니 다. 먼저 기능 이 같은 호스트 를 한 그룹 으로 나 누고 그룹 에서 알고리즘 을 지정 한 다음 에 서버 에서 감청 한 포트 를 지정 하면 전송 할 수 있 습 니 다. ssh 프로 토 콜: 1. 환경: 스케줄 러 172.16.200.102,백 엔 드 호스트 172.16.200.104 와 172.16.200.105 2. 메 인 프로필 / etc / nginx / nginx. conf 에 stream 컨 텍스트 를 추가 하고 stream 컨 텍스트 에서 정의 합 니 다.
    stream {
            upstream sshsrv {
                    server 172.16.200.104:22;
                    server 172.16.200.105:22;
                    }
            }
    

    3. 호출 은 정의 세그먼트 아래 에서 직접 호출 하고 다음 내용 을 추가 합 니 다.
    server {
            listen 22;
            proxy_pass sshsrv;
    }
    

    4. sshd 서비스 172.16.200.102 감청 20 포트 를 닫 습 니 다. 그러나 sshd 서 비 스 는 기본 으로 시작 되 기 때문에 원래 의 sshd 서 비 스 를 닫 아야 합 니 다. 그렇지 않 으 면 충돌 할 수 있 습 니 다. (또는 listen 을 다른 포트 로 바 꾼 다음 ssh 연결 시 지정 한 포트 도 가능 합 니 다)
    [root@localhost nginx]# service sshd stop
    

    그리고 프로필 을 검사 하고 프로필 을 다시 불 러 옵 니 다.
    [root@localhost nginx]# nginx -t
    [root@localhost nginx]# nginx -s reload
    

    5. 클 라 이언 트 한 대 를 사용 하여 ssh 172.16.200.102 로 연결 하 는 것 을 검증 하고 올 라 간 후에 ip a Ip 주 소 를 보면 현재 주 소 는 172.16.200.104 이 고 exit 가 종료 한 후에 다시 연결 하 는 것 을 볼 수 있 습 니 다. ip 는 172.16.200.105 로 실험 성공 을 증명 합 니 다.

    좋은 웹페이지 즐겨찾기