번개애비의 라이프스톼일

Nginx proxy & Linux 최적화 셋팅 본문

IT

Nginx proxy & Linux 최적화 셋팅

번개애비 2019. 5. 24. 16:58

 

vi /etc/sysctl.conf
net.core.somaxconn = 65536
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_window_scaling = 1   
net.ipv4.tcp_max_syn_backlog = 3240000
vi /etc/security/limits.conf
soft nofile 4096
hard nofile 4096

리눅스 최적화 셋팅 임.

각각의 파일에 접근하여 해당 내용을 추가해주면 됨.

 

 

 

아래부터는 nginx proxy 셋팅임.

nginx micro caching 기능을 위해 사전에 디렉토리를 설정함.

mkdir /home/nginx_cache/cache_file
sudo chmod 705 /home/nginx_cache/cache_file
sudo chown nginx /home/nginx_cache/cache_file

 

nginx 메인 설정 파일임.

vi /etc/nginx/nginx.conf
user  nginx;
worker_processes  4;

error_log  /dev/null;
pid        /var/run/nginx.pid;


events {
    worker_connections 66536;
    use epoll;
    multi_accept on;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;


    client_body_buffer_size 128k;
    client_header_buffer_size 1m;
    client_max_body_size 2000m;
    large_client_header_buffers 8 8k;
    output_buffers 1 32k;
    postpone_output 1460;


    client_header_timeout  3m;
    client_body_timeout    3m;
    send_timeout           3m;


    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  /dev/null;

    open_file_cache max=1000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 5;
    open_file_cache_errors off;
    
    keepalive_timeout 65;
    keepalive_requests 100000;
    sendfile        on;
    tcp_nopush     on;

    proxy_cache_path /home/nginx_cache/cache_file keys_zone=cache:10m levels=1:2 inactive=600s max_size=1g;

    gzip on;
    gzip_buffers 16 8k;
    gzip_comp_level 6;
    gzip_http_version 1.0;
    gzip_min_length 1;
    gzip_types text/html application/x-javascript text/css application/javascript text/javascript text/plain text/xml application/json application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/xml font/eot font/opentype font/otf image/svg+xml image/vnd.microsoft.icon;
    gzip_disable "MSIE [1-6]\.";
    gzip_vary on;


    include /etc/nginx/conf.d/*.conf;
}

 

nginx에서 proxy셋팅에서 80포트방식의 셋팅

 
server {
         listen 80;
 
         server_name test.com;

	     proxy_cache cache;
	     proxy_cache_valid 200 1s;
	
 
         location / {
            proxy_pass http://10.89.49.177/;
            proxy_redirect off;
            proxy_pass_header Server;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Scheme $scheme;
	        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	        proxy_set_header X-Forwarded-Server $host;
	        proxy_set_header X-Forwarded-Host $host;
	    
         }
 }

 

nginx에서 proxy셋팅에서 443포트방식의 셋팅

(SSL 인증서의 경우 letsencrypt를 통해 할당받음)
자세한 설명은 -> https://www.burndogfather.com/187

server {
	listen  443 ssl http2;
        listen  [::]:443 ssl http2;
	server_name vm101.waisy.net;

	ssl_certificate /etc/letsencrypt/live/vm102.waisy.net/fullchain.pem; 
	ssl_certificate_key /etc/letsencrypt/live/vm102.waisy.net/privkey.pem;
	ssl_session_cache shared:le_nginx_SSL:1m;
	ssl_session_timeout 1440m;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

	
	 proxy_cache cache;
	 proxy_cache_valid 200 1s;
	

        location / {
            proxy_pass https://10.89.49.101/;
            proxy_redirect off;
            proxy_pass_header Server;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Scheme $scheme;
	    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	    proxy_set_header X-Forwarded-Server $host;
	    proxy_set_header X-Forwarded-Host $host;

	   
        }
 }

 

 

기본적으로 사이트속도를 향상시키기 위해서는 사이트에서 뿌려지는 데이터들의 용량이 적으면 적을수록 유리함.

JS나 CSS등의 파일들은 https://www.websiteplanet.com/ko/webtools/jscssminifier/ 를 통해서 최대한 압축해주는것이 좋음. 이미지파일등은 https://www.websiteplanet.com/ko/webtools/imagecompressor/ 을 통해서 최대한 압축해주는것이 좋음.

 

 

성능차이가 확연한것을 확인할 수 있음.

 

[설정 및 압축전]

무료 2.9초의 로드...... 후덜덜

 

 

[설정 및 압축 후]

0.6초대로 바뀜

Comments