Nginx 의 구덩이 밟 기 일기

8685 단어
머리말
최근 엔 엔 엔 진 스에 전면 배치 되 는 앞 뒤 분리 프로젝트 가 있 는데, 접 촉 했 던 웹 서버 는 ibm 의 ws, 웹 로직 등 이 있 기 때문에 아직 생산 과정 에서 Nginx 를 사용 하여 웹 서버 를 만 든 적 이 없 기 때문에 많은 구 덩이 를 밟 았 습 니 다. 이 를 통 해 여생 을 Nginx 에서 구 덩이 를 밟 지 않 았 으 면 좋 겠 습 니 다 ~
Nginx 설치
Nginx 의 설치 에 구덩이 가 있 습 니 다. 그것 은 바로 최신 안정 판 을 설치 하 는 것 이 좋 습 니 다. 낮은 버 전의 구덩이 아버지 때문에 처음에 우 리 는 낮은 버 전 을 설치 한 다음 에 HTTPS (아 리 클 라 우 드 가 제공 하 는 ssl 설정 에 따라 설정 이 잘못 되 었 을 확률 이 크 지 않 습 니 다) 를 설 치 했 습 니 다. 그러나 HTTPS 를 방문 하지 못 했 습 니 다. 그 후에 최신 안정 버 전 을 오랫동안 바 꾼 후에 설정 이 성공 적 으로 되 었 습 니 다.설치 과정 은 다음 과 같 습 니 다.
1. PCRE 의존 설치
yum install -y pcre pcre-devel

2. Zlib 설치 의존
yum install -y zlib zlib-devel

3. c + + 설치 의존
yum install -y gcc-c++

4. ssl 의존 설치 (SSL 인증 서 를 설정 할 필요 가 있다 면)
yum install -y openssl openssl-devel

5. Nginx 다운로드 (최신 안정 버 전 을 다운로드 하 는 것 이 좋 습 니 다)
wget -c https://nginx.org/download/nginx-1.10.2.tar.gz

6. 압축 을 풀 고 기본 설정 사용
tar -zvxf nginx-1.10.2.tar.gz
cd nginx-1.10.2.tar.gz
./configure

7. 컴 파일 및 설치
make
make install

8. 설 치 된 경 로 를 보고 시작 합 니 다.
whereis nginx 
nginx -t //         ,           
nginx -c  /etc/nginx/nginx.conf  //          

참고 문장
Nginx 의 역방향 에이전트
1. Nginx 의 역방향 에이전트
장면 과 결합 하여 제 가 지금 * * / api * * 의 모든 요청 을 백 엔 드 인터페이스 (eg: www. my domain. com / api / xxxx 를 www. my domain. com: 8080 / xxxx) 로 전송 하려 면 설정 파일 에 설정 해 야 합 니 다.
location /api/ {
    proxy_pass http://www.mydomain.com:8080/;
}

여기 서 주의해 야 할 부분 이 있 습 니 다. Nginx 의 설정 은 위 에서 아래로 입 니 다. 즉, 만약 당신 이 이전에 아래 와 같이 설정 했다 면.
location / {
    root  /www/resource/;
    index index.html index.htm;
}
location /api/ {
    proxy_pass http://www.mydomain.com:8080/;
}

이 모양 은 유효 하지 않 습 니 다. * * / api / 의 일치 규칙 을 만족 시 키 는 것 도 만족 / * 의 일치 규칙 이 고 Nginx 는 위 에서 아래로 설정 되 어 있 기 때문에 모두 대리 로 / 일치 규칙 에 전송 되 었 습 니 다.
더 많은 역방향 에이전트 규칙 은 다음 과 같 습 니 다.
location  = / {
  #      / ,             
}

location  / {
  #           /   ,              
  #                
}

location /documents/ {
  #       /documents/      ,      ,        
  #                 ,          
}

location ~ /documents/Abc {
  #       /documents/      ,      ,        
  #                 ,          
}

location ^~ /images/ {
  #       /images/      ,      ,        ,     。
}

location ~* \.(gif|jpg|jpeg)$ {
  #       gif,jpg jpeg      
  #   ,     /images/        config D   ,   ^~          
}

location /images/ {
  #       /images/,    ,    ^~   
}

location /images/abc {
  #         /images/abc,    ,    ^~   
  # F G           
}

location ~ /images/abc/ {
  #      config D    :      config G      ,      ,        ,  
}

2. Nginx 매개 변수 가 져 오기
장면 과 결합 하여 제 가 지금 / api 에서 요청 한 파 라 메 터 를 가 져 온 다음 에 퍼 가기 (eg: www. my domain. com / api? img = htt..) 를 하려 면 다음 과 같이 설정 을 수정 해 야 합 니 다.
location /api/ {
    proxy_pass $arg_img; # $arg_   :        
}

여기에 작은 구덩이 가 있 습 니 다. 도 메 인 이 다 르 면 설정 파일 에 써 야 합 니 다.
server {
    listen 80;
    resovler 8.8.8.8;
}

resovler 는 Nginx 가 ip 를 분석 하고 대리 방문 을 하 는 것 과 같 습 니 다. resovler 8.8.8 을 설정 하지 않 으 면 Nginx 는 502 를 보고 합 니 다.
3. Nginx 설정 쿠키
장면 과 결합 하여 제 가 지금 / api 에서 요청 한 파 라 메 터 를 가 져 오고 Cookie 에 설정 하고 싶다 고 가정 합 니 다 (eg. www. my domain. com / api? cookie =..)
location /api/ {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    add_header 'Set-Cookie' 'mycookie=$arg_cookie';
    add_header 'domain' '.mydomain.com'; 
    proxy_pass https://www.mydomain.com/;
}

앞의 두 매개 변 수 는 사용자 가 방문 하 는 IP 를 설정 하고 Cookie 를 설정 합 니 다. 그 중에서 문제 가 있 습 니 다. 배경 에 있 는 Set - Cookie 를 사용 하면 브 라 우 저 는 Cookie 를 저장 하지 않 습 니 다. 도 메 인 에 따라 브 라 우 저 는 이 Cookie 를 버 립 니 다. 자바 로 Set - Cookie 를 쓰 면
Cookie cookie = new Cookie("cookie","cookie");
cookie.setPath("/");
cookie.setDomain(".domain.com");
request.addCookie(cookie);

도 메 인 과 도 메 인 이름 (. my domain. com 은 도 메 인, www, my domain. com 은 도 메 인 이름) 을 설정 해 야 합 니 다. 도 메 인 이름 은 DNS 로 IP 로 해석 할 수 있 습 니 다.
그래서 Nginx 가 쿠키 를 다시 설정 할 때 주의해 야 합 니 다.
add_header 'domain' 'xxxx';

4. Nginx 의 부하 균형
Nginx 의 또 다른 유명한 용 도 는 부하 균형 이다. 그 중에서 부하 균형 전략 은 6 가지 가 있다. 가중치 (weight), iphash (ip 분배 방식 에 따라), leastconn (최소 연결 수), fair (응답 시간 에 따라), urlhash (URL 에 따라 분배).다음은 가중치 의 부하 균형 전략 설정 을 예 로 들 면:
//      https://www.mydomain.com:8090   https://www.mydomain.com:8091       
upstream tomcat_pool 
    {
    server https://www.mydomain.com:8090 weight=4 max_fails=2 fail_timeout=30s;
      server https://www.mydomain.com:8091 weight=4 max_fails=2 fail_timeout=30s;
    }

그 중에서 weight 는 가중치, 가중치 가 큰 사람 을 대표 하고 배정 되 는 기회 가 비교적 크다. maxfails 는 최대 실패 횟수 를 말 합 니 다. 실패 횟수 에 도달 하면 이 노드 는 사용 할 수 없 음 으로 표 시 됩 니 다. fail 을 기다 리 십시오.timeout 시간 주기 도착, 다시 요청 ~
Nginx 최적화
1.worker_processes
Nginx 의 프로 세 스 수 workerprocesses, CPU 의 숫자 에 따라 쓰 면 일반적으로 CPU 의 배수 입 니 다.
2. I / O 모델
Nginx 의 I / O 모델 을 설정 하고 Linux 2.6 버 전에 이 어 epoll 을 지원 합 니 다.시스템 이 epoll 을 지원 하지 않 으 면 Nginx 는 기본적으로 Select 나 Poll 의 I / O 모델 을 선택 합 니 다. window 가 Select 모델 인 것 같 습 니 다.
events{
    use epoll;
}

3.worker_rlimit_nofile
worker_rlimit_nofile 은 일반적으로 시스템 의 파일 조작 수 와 같 습 니 다 (ulimit - n).최적화 시스템 의 파일 조작 수 를 어떻게 얻 는 지 확대 하 다.
우선 프로 세 스 의 가장 큰 파일 핸들 을 수정 합 니 다.
ulimit -n 1048576

단일 프로 세 스 가 할당 할 수 있 는 최대 파일 수 를 수정 합 니 다.
echo 2097152 > /proc/sys/fs/nr_open

프로필 / etc / security / limits. conf 에 쓰기
*   soft nofile  1048576
*   hard nofile 1048576
*   soft nproc unlimited
root soft nproc unlimited

마지막 으로 오래된 서 류 를 지 워 라.
rm -rf /etc/security/limits.d/*

그리고 / etc / sysctl. conf 파일 을 수정 합 니 다.
fs.nr_open=2097152
fs.file-max = 1048576

fs.nr_open 은 하나의 프로 세 스 가 할당 할 수 있 는 최대 파일 작업 수 를 말 합 니 다. file - max 는 가장 큰 파일 핸들 을 말 하 며 설정 파일 을 유효 하 게 합 니 다.
systcl -p

4.worker_connections
Nginx 의 최대 연결 수, 이론 적 으로 Nginx 의 프로 세 스 수 workerprocesses * Ngin 의 최대 연결 수 workerconnections;
worker_connections 102400;

5.keepalive_timeout
keepalive 의 시간 초과.
keepalive_timeout 60;

다음으로 전송:https://juejin.im/post/5c94a25a5188252d5f0fda4c

좋은 웹페이지 즐겨찾기