nginx 학습 - 입문 부터 정통 까지

nginx 학습 입문 부터 정통 까지
  • 왜 Ningx
  • 를 사 용 했 습 니까?
  • Nginx 기본 용법
  • Nginx 의 주 프로필
  • Nginx 의 기타 파일
  • Nginx 역방향 에이전트
  • Nginx 의 location 경로 맵
  • Nginx 의 부하 균형
  • 폴 링
  • 가중치
  • ip_hash

  • Nginx 동정 분리
  • 동적 자원 에이전트
  • 정적 자원 에이전트
  • 확장 내용 (nginx 클 러 스 터)
  • 왜 Ningx 를 사용 합 니까?
  • Nginx 는 고성능 HTTP 와 역방향 프 록 시 서버
  • 메모리 소모 가 적 습 니 다. 10 개의 nginx 를 켜 야 150 M 메모 리 를 차지 합 니 다. nginx 는 정적 파일 을 잘 처리 하고 메모리 소모 가 적 습 니 다
  • 크로스 플랫폼, 배치 가 간단 하고 비 차단, 높 은 동시 연결: 2 - 3 만 동시 연결 수 를 처리 하고 공식 검 측 은 5 만 동시 다발
  • 을 지원 할 수 있 습 니 다.
    Nginx 기본 용법
    nginx: sudo service nginx start 재 부팅 nginx: sudo service nginx reload 종료 nginx: nginx - s stop
    Nginx 의 주 프로필
    우 리 는 보통 nginx. conf 를/etc/nginx/nginx. conf 에 놓는다.
    user  nginx;
    # worker_processes的数值越大,Nginx的并发能力就越强
    worker_processes  1;
    
    # error_log代表Nginx错误日志存放的位置
    error_log  /var/log/nginx/error.log warn;
    # pid是Nginx运行的一个标识
    pid        /var/run/nginx.pid;
    
    events {
         
    	# worker_connections的数值越大,Nginx的并发能力就越强
        worker_connections  1024;
    }
    
    http {
         
    	# include代表引入一个外部文件
    	# mime.types中存放着大量媒体类型
        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;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
        
    	#引入了conf.d下以.conf为结尾的配置文件
        include /etc/nginx/conf.d/*.conf;
    }
    

    Nginx 의 다른 파일
    다른 프로필 은/etc/nginx/conf. d/*. conf 기본 설정 정보 에 놓 여 있 습 니 다. (이것 은 정적 자원 에 접근 하 는 것 입 니 다)
    nginx ssl 단순 설정 (https 인증) -- 내 가 보기
    server {
         
    
    	# listen代表Nginx监听ipv4的端口号
        listen       80;
        # listen代表Nginx监听ipv6的端口号
        listen  [::]:80;
        # server_name代表Nginx接受请求的IP
        server_name  localhost;
    
        location / {
         
        	# root:将接受到的请求根据/usr/share/nginx/html去查找静态资源
            root   /usr/share/nginx/html;
            # index:默认去上述的路径中找到index.html或index.htm
            index  index.html index.htm;
        }
    
    	#错误跳转页面(没有不耽误)
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
         
            root   /usr/share/nginx/html;
        }
        
    }
    

    Nginx 역방향 에이전트
    역방향 대 리 를 배 울 때 는 먼저 정방 향 대 리 를 이해 해 야 한다.
    정방 향 에이전트:
    1. 정방 향 프 록 시 서 비 스 는 클 라 이언 트 가 설립 한 2. 클 라 이언 트 는 프 록 시 서버 와 목표 서버 가 모두 누구 인지 파악 합 니 다. 3. 방문 권한 을 돌파 하고 방문 속 도 를 높이 며 목표 서버 에 클 라 이언 트 의 ip 주 소 를 숨 깁 니 다.
    nginx学习 -- 从入门到精通_第1张图片 역방향 대리
    1. 역방향 프 록 시 서버 는 서버 에 설 치 된 2. 클 라 이언 트 가 어떤 서버 에 접근 하 는 지 모른다. 3. 부하 균형 을 이 루 고 서버 의 진정한 ip 주 소 를 숨 길 수 있다.
    nginx学习 -- 从入门到精通_第2张图片 역방향 프 록 시 코드 구현:
    수정/etc/nginx/conf. d/*. conf
    server {
         
        listen       80;
        listen  [::]:80;
        server_name  localhost;
    
        location / {
         
        	# 反向代理的服务器:127.0.0.1可以换成域名或者ip
            proxy_pass http://127.0.0.1:8080/;
        }
        
    }
    

    Nginx 의 location 경로 맵
    1. = 일치
    location = / {
         
    	#精准匹配,主机名后面不能带能和字符串
    }
    

    2. 공통 일치
    location /xxx {
         
    	#匹配所有以/xxx开头的路径
    }
    

    3. 시작 경로 와 일치
    location ^~ /xxx/xx {
         
    	#匹配所有以/xxx/xx开头的路径
    }
    

    4. 정규 일치
    location ~ /xxx {
         
    	#匹配所有以/xxx开头的路径
    }
    

    5. 끝 경로 와 일치
    location ~* \.(gif/jpg/png)$ {
         
    	#匹配以.gif、.jpg或者.png结尾的路径
    }
    

    6. 공통 일치
    location / {
         
    	#通用匹配,匹配所有请求
    }
    

    Nginx 의 부하 균형
    Nginx 는 세 가지 부하 균형 정책 이 있 습 니 다.
  • 폴 링: 클 라 이언 트 를 요청 하여 모든 서버 에 평균 분배
  • 가중치: 클 라 이언 트 의 요청 을 서버 의 가중치 에 따라 서로 다른 수량
  • 을 분배 합 니 다.
  • ip_hash: 요청 한 클 라 이언 트 의 ip 주소 에 따라 지정 한 서버 에 요청 을 보 냅 니 다. 이 클 라 이언 트 의 요청 한 ip 주소 가 변 하지 않 으 면 요청 을 처리 하 는 서버 는 항상 같은 서버
  • 입 니 다.
    폴 링
    upstream daili_server{
         
        server localhost:8080; #服务器IP或域名
        server localhost:8081; #服务器IP或域名
    }
    server {
         
        listen       80;
        listen  [::]:80;
        server_name  localhost;
    
    	location / {
         
            proxy_pass http://daili_server/;	#负载均衡
        }
    }
    

    중시 하 다
    upstream daili_server{
         
        server localhost:8080 weight=10; #服务器IP或域名
        server localhost:8081 weight=2;  #服务器IP或域名
    }
    server {
         
        listen       80;
        listen  [::]:80;
        server_name  localhost;
    
    	location / {
         
            proxy_pass http://daili_server/;	#负载均衡
        }
    }
    

    ip_hash
    upstream daili_server{
         
    	ip_hash;
        server localhost:8080; #服务器IP或域名
        server localhost:8081; #服务器IP或域名
    }
    server {
         
        listen       80;
        listen  [::]:80;
        server_name  localhost;
    
    	location / {
         
            proxy_pass http://daili_server/;	#负载均衡
        }
    }
    

    Nginx 동정 분리
    사용자 가 정적 코드 에 접근 하 는 속 도 를 높이 고 배경 응용 프로그램 에 대한 접근 을 낮 춥 니 다. 저 희 는 정적 자원 을 nginx 에 넣 고 동적 자원 을 tomcat 서버 에 전송 하 는 Nginx 의 병행 능력 공식: workerprocesses * worker_connections/4 | 2 = Nginx 최종 병행 능력 동적 자원 필요/4, 정적 자원 필요/2
    동적 자원 에이전트
    location / {
         
      proxy_pass 路径;
    }
    

    정적 자원 에이전트
    location / {
         
        root 静态资源路径;
        index 默认访问路径下的什么资源;
        autoindex on;#可以不写,写了则代表展示静态资源的全部内容,以列表的形式展开 
    }
    

    확장 내용 (nginx 군집)

    좋은 웹페이지 즐겨찾기