Nginx 학습 정리

10872 단어 nginx
Nginx 설치 및 설정
설치
약, 홈 페이지 에서 다운로드 하면 됩 니 다.Nginx 는 C 언어 로 작 성 된 것 입 니 다. 플랫폼 을 뛰 어 넘 지 않 고 운영 체제 마다 다른 Nginx 를 다운로드 해 야 합 니 다.
1 윈도 우즈 의 Nginx 기본 명령
  
start nginx

  
./nginx -s quit
./nginx -s stop

    
./nginx -V

  
./nginx -s reload

2 Linxu 의 Nginx 기본 명령
  
./sbin/nginx

  
./sbin/nginx -s quit
./sbin/nginx -s stop

    
./sbin/nginx -V
./sbin/nginx -v

  
./sbin/nginx -s reload

3 Nginx 가 CentOS 7 에 설치 되 어 있 습 니 다.
Nginx   Linux     Windows        ,         ,              。

step 1 -    CentOS   yum         
    yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
step 2 -     Nginx     ,   ./configure     
    No 1 -         ,    bash ./configure
    No 2 -          ,    ./configure --prefix=[  ]
step 3 -    make
step 4 -    make install
step 5 -      ,      /usr/local          nginx   (   configure                 )
step 6 -         sbin   ,         Nginx
step 7 -      Nginx       ,       
    No 1 -           ,        
    No 2 -                 ,           
        [1] firewall-cmd --zone=public --add-port=80/tcp --permanent
        [2] firewall-cmd --reload

크로스 필드 백 엔 드 부대 코드
Nginx 를 사용 하여 정적 자원 서버 를 사용 하여 전후 단 분 리 를 한다 면 전단 페이지 의 크로스 도 메 인 문제 와 관련 됩 니 다.자바 Spring 기반 크로스 도 메 인 허용 설정:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 *           
 *   Spring        
 */
@Configuration
public class CorsConfig{
    //    Http     
    static final String ORIGINS[] = new String[] { "GET", "POST", "PUT", "DELETE" };

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                //              
                registry.addMapping("/**").allowedOrigins("*").allowCredentials(true).allowedMethods(ORIGINS)
                        .maxAge(3600).allowCredentials(true);
            }
        };
    }
}

Nginx 의 개념 적 사고
Nginx 가 뭐 예요?
Nginx           Http、Https        Web    。
Nginx       ——          。
         ,        。
  Apache       ,      。

Nginx 는 어떻게 고성능 을 실현 합 니까?
Nginx               Worker   ;                , Worker        Request。
   Request      ,     Worker        ,    Request        ,Worker               Request。
    ,     Nginx         ,          Requst,    Nginx   io          。

Nginx 차단 요청
server { 
     listen 80; 
     server_name  ""; 
     return 444;
 }

Nginx 놀 라 움 해결
                   ,        。  Nginx                   。
Nginx        ,       Worker         。

Nginx 큰 파일 업로드
실제 사이트 개발 과정 에서 비교적 큰 파일 을 올 리 려 는 수요 에 부 딪 힐 수 있다.이러한 상황 에서 Nginx 를 정적 자원 서버 로 사용 하면 설정 을 조정 해 야 하 는 일련의 문제 가 발생 할 수 있 습 니 다.
Nginx 의 운영 절차:
      (     )      (      )
       -->     Nginx     -->     java project

Nginx 에 브 라 우 저가 접근 할 때 Nginx 는 서버 로 존재 합 니 다. 이 때 Nginx 설정 파일 에 서 는 이 단계 의 설정 에 대해 모두 client 를 사용 합 니 다.xxxx 설정.Nginx 가 백 엔 드 의 자바 프로젝트 에 접근 할 때 Nginx 는 클 라 이언 트 로 존재 합 니 다. 이 때 설정 파일 에 모두 proxy 입 니 다.xxxx 설정.
Nginx 에 대응 하 는 nginx. conf 파일 은 http 모듈 에서 관련 조절 을 합 니 다.
#            ,            
client_max_body_size  500m;
#          body       ,            
client_body_buffer_size 100m;
#          ,         ,              
client_header_buffer_size 16k;
#         client_header_buffer_size     ,     large_client_header_buffers    
large_client_header_buffers 4 32k;


#   Nginx          ,    
proxy_connect_timeout 60s;
# Nginx    upstream         ,    
proxy_send_timeout 60s;
# Http          ,    Nginx      ,    
proxy_read_timeout 60s;

#   proxy_buffering      ,proxy_buffers   proxy_busy_buffers_size      
proxy_buffering on;
# Nginx          Request      
proxy_buffers 4 8k;

백 엔 드 에 SpringBoot 2.0 을 사용 하려 면 application. properties 에 다음 설정 을 추가 해 야 합 니 다.
spring.servlet.multipart.max-file-size=500MB
spring.servlet.multipart.max-request-size=500MB

Nginx 프로필 통합
Nginx 디 렉 터 리 에 있 는 conf 폴 더 아래 nginx. conf 가 있 습 니 다.내용 은 다음 과 같다.
#       
#   Linux           ,              
# user root;

# Nginx   ,       cpu     
worker_processes  8;


#                 
#     Linux           
# Linux            (ulimit -n)
worker_rlimit_nofile 65535;

#         
error_log  logs/error.log;

# pid      
#            /log  
pid nginx.pid;


#      Nginx            
events {

    #       select、poll、epoll、kqueue  ,          ,        
    #   Linux  ,           epoll
    #   Windows  ,     poll
    use epoll; 

    #           ,  Linux            
    #   ,Nginx      
    worker_connections  1024; 

    #          ,        
    # on    ,off    ,   on
    accept_mutex on;

    #                   
    # on    ,off    ,   off
    multi_accept on;
}

#        
http {

    #              
    include       mime.types;

    #       ,    text/plain
    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  logs/access.log  main;

    #     
    charset  utf-8;
    
    #    tcp_nopush     HttpResponse Header                ,          
    tcp_nopush  on;

    #    tcp_nodelay,                  ,     IO   
    tcp_nodelay on;

    #      sendfile          
    # sendfile   Linux 2.0      IO   (    IO   )
    sendfile  on;

    # Nginx          sendfile()          
    #      0 (     ),      http/server/location    
    sendfile_max_chunk  1024k;

    #       ,    
    keepalive_timeout  65s;

    #            ,   100
    keepalive_requests 100;

    #    gzip     
    gzip  on;

    #            ,            
    client_max_body_size  500m;

    #          body       ,            
    client_body_buffer_size 100m;

    #          ,         ,              
    client_header_buffer_size 16k;

    #         client_header_buffer_size     ,     large_client_header_buffers    
    large_client_header_buffers 4 32k;

    #        Nginx          ,    
    proxy_connect_timeout 60s;

    # Nginx    upstream         ,    
    proxy_send_timeout 60s;

    # Http            ,    Nginx      ,    
    proxy_read_timeout 60s;

    #   proxy_buffering      ,proxy_buffers   proxy_busy_buffers_size      
    proxy_buffering on;

    # Nginx          Request      
    proxy_buffers 4 8k;


    # Nginx        ——           
    #       server             url
    server {

        #     
        listen  8090;

        #      
        server_name  hello_world;

        #     
        #charset gkb;
        charset utf-8;

        #               ,  :k - kb,m - mb
        limit_rate 500k;


        #                
        # error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;

        #            http://ip:8090/,       http://ip:8091/
        location / {
            proxy_pass http://localhost:8091/;
        }

        #            http://ip:8090/api,       http://ip:8092/
        location /api {
            proxy_pass http://localhost:8092/;
        }

        #          
        location /api2 {

            #                      request header,Nginx    HTTP 408(Request Timed Out)
            client_header_timeout 60s;

            #                   request body   ,Nginx    HTTP 408(Request Timed Out)
            client_body_timeout 60s;

            #                 
            send_timeout 60s;

            #     
            proxy_next_upstream_tries 3;

            # Nginx                 
            proxy_connect_timeout 60s;

            # Nginx                   
            proxy_read_timeout 60s;

            # Nginx                   
            proxy_send_timeout 60s;

            #                 502、504    ,       
            proxy_next_upstream http_500 http_501 http_502 http_503 http_504 error timeout invalid_header;

            #      aio,    
            aio on;

            #          http     Header    Host、X-Real-IP、X-Forwarded-For            
            proxy_set_header Host  $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            #       
            proxy_pass http://hello_word_service/;
        }
    }

    #                
    upstream hello_word_service {
        #               
        server  localhost:8091 weight=5;
        server  localhost:8092 weight=5;

        #                 
        # server  localhost:8091;
        # server  localhost:8092;
        # fair;

        #            ip   hash     
        #   ,   ip   Hash      ,                
        # server  localhost:8091;
        # server  localhost:8092;
        # ip_hash;

        #          
    }




    # Nginx        ——                 
    #       server           
    server {

        #     
        listen  8100;

        #      
        server_name  demo_web;

        #     
        charset utf-8;

        #     ,              index.html    index.htm
        #         ,       
        #         http://ip:8100,      
        index index.html index.htm;

        #          ,            
        root D:\\demo_web;

        #                  http://ip:8100/api,       http://ip:8080/
        location /api {
            proxy_pass http://localhost:8080/;
        }
        
        #          
        location /api2 {

            proxy_next_upstream http_500 http_501 http_502 http_503 http_504 error timeout invalid_header;
            proxy_set_header Host  $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            #       
            proxy_pass http://demo_web_service/;
        }
    }

    #       
    upstream demo_web_service {
        server  localhost:8080;
    }






    # Nginx        ——     
    #       Nginx           url       
    server {

        #     
        listen  80;

        #      
        server_name  base_proxy;

        #     
        charset utf-8;

        location / {
            proxy_pass http://baidu.com;
        }
    }



    #            ,    include           
    # include servers.conf;
}

좋은 웹페이지 즐겨찾기