본문 바로가기

WEB/Nginx

[Nginx] Amazon Linux 2 서버에 Nginx 설치 및 기본 환경 구성

반응형

Amazon Linux 2 서버에 Nginx 설치

 - Nginx  설치 파일로 설치하거나 패키지를 이용하여 설치할 수 있다. 이번 포스팅에서는  패키지로 설치를 진행한다.

   Nginx 설치는 아래 공식 사이트에 자세하게 나와있다.

https://www.nginx.com/resources/wiki/start/topics/tutorials/install/

 

Install | NGINX

There are currently two versions of NGINX available: stable (1.20.x), mainline (1.21.x). The mainline branch gets new features and bugfixes sooner but might introduce new bugs as well. Critical bugfixes are backported to the stable branch. In general, the

www.nginx.com

 

Amazon Linux 2에서 자동 패치 관리가 적용되고, dependency 까지 설치해줄 수 있는 amazon-linux-extras를 이용한다.

 

1. Nginx 최신 설치(1.22 버전)

# amazon-linux-extras install nginx1

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2022-12-26 12:43:05 UTC; 5s ago
  Process: 19393 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 19390 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 19389 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 19396 (nginx)
    Tasks: 2
   Memory: 6.2M
   CGroup: /system.slice/nginx.service
           ├─19396 nginx: master process /usr/sbin/nginx
           └─19397 nginx: worker process

Dec 26 12:43:04 ip-10-20-2-177.ap-northeast-2.compute.internal systemd[1]: Starting The nginx HTTP and reverse proxy server...
Dec 26 12:43:05 ip-10-20-2-177.ap-northeast-2.compute.internal nginx[19390]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Dec 26 12:43:05 ip-10-20-2-177.ap-northeast-2.compute.internal nginx[19390]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Dec 26 12:43:05 ip-10-20-2-177.ap-northeast-2.compute.internal systemd[1]: Started The nginx HTTP and reverse proxy server.

 

2. 설치 경로

$ ls -altr /etc/nginx/
total 84
-rw-r--r--  1 root root 2334 Nov 18 12:30 nginx.conf
-rw-r--r--  1 root root 3610 Nov 18 12:30 win-utf
-rw-r--r--  1 root root  664 Nov 18 12:30 uwsgi_params.default
-rw-r--r--  1 root root  664 Nov 18 12:30 uwsgi_params
-rw-r--r--  1 root root  636 Nov 18 12:30 scgi_params.default
-rw-r--r--  1 root root  636 Nov 18 12:30 scgi_params
-rw-r--r--  1 root root 2656 Nov 18 12:30 nginx.conf.default
-rw-r--r--  1 root root 5349 Nov 18 12:30 mime.types.default
-rw-r--r--  1 root root 5349 Nov 18 12:30 mime.types
-rw-r--r--  1 root root 2223 Nov 18 12:30 koi-win
-rw-r--r--  1 root root 2837 Nov 18 12:30 koi-utf
-rw-r--r--  1 root root 1007 Nov 18 12:30 fastcgi_params.default
-rw-r--r--  1 root root 1007 Nov 18 12:30 fastcgi_params
-rw-r--r--  1 root root 1077 Nov 18 12:30 fastcgi.conf.default
-rw-r--r--  1 root root 1077 Nov 18 12:30 fastcgi.conf
drwxr-xr-x  2 root root    6 Nov 18 12:30 default.d
drwxr-xr-x  2 root root    6 Nov 18 12:30 conf.d

 

3. 설치 환경 파일 확인

 - tree 명령어가 설치가 안됬을 경우 yum install tree 명령을 통해 설치 진행

# pwd
/etc/nginx

# tree
.
├── conf.d (nginx.conf에서 불러들일 수 있는 설정 파일)
├── default.d
├── fastcgi.conf (FastCGI 설정 파일)
├── fastcgi.conf.default
├── fastcgi_params
├── fastcgi_params.default
├── koi-utf
├── koi-win
├── mime.types (파일 확장명과 MIME 타입 목록)
├── mime.types.default
├── nginx.conf (접속자 수, 동작 프로세스 수 등 퍼포먼스에 관한 기본 설정 파일)
├── nginx.conf.default
├── scgi_params
├── scgi_params.default
├── uwsgi_params
├── uwsgi_params.default
└── win-utf

2 directories, 15 files

 

4. max user processes 및 open files 설정 확인

 - max user processes : 오픈 프로세스 수 (65535)

 - open files : 오픈 파일 수 (unlimited)

# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 30446
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

 

max user processes 및 open files 수정은 /etc/security/limits.conf 내 마지막 하단에 추가(1번, 2번 둘 중 방법 하나로 진행)

vi /etc/security/limits.conf

#1번
nginx soft nofile 65536
nginx hard nofile 65536
nginx soft nproc 65536
nginx hard nproc 65536

#2번
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536

 

5. Nginx 설정 확인

 

5-1) 기본설정

cat /etc/nginx/nginx.conf

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;                          # nginx 프로세스가 실행되는 권한, 보안상 root 권한 X
worker_processes auto;               # worker방식 체결, 서버의 Core 수 만큼 할당 권장
error_log /var/log/nginx/error.log;  # Error 로그 경로
pid /run/nginx.pid;                  # Pid 생성 파일 경로

 

5-2) 로그 로테이션

 - "rotate 10", 10일 단위로 로그 로테이션을 수행하며 압축하여 저장

# vi /etc/logrotate.d/nginx

/var/log/nginx/*.log {
    create 0640 nginx root
    daily
    rotate 10
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

 

5-3) events

 - 접속 처리에 관한 설정

events {
    worker_connections 1024; # worker 프로세스 한개 당 동시 접속 수 지정
}

 

5-4) http

 - 웹, 프록시 관련 서버 설정

 - x-forwarded-for 설정

 - proxy를 통해 들어오는 IP들을 log_format을 이용하여 같이 출력

http {
    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;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

 

5-5) server

 - location 별로 관리하는 것을 권장

 - 만약 해당 부분에 location 별로 구분해서 트래픽을 분기시키고 싶으시다면 그에 맞는 location 설정값을 제공해 주시기 바랍니다.

 - default nginx 설정 - location 기본설정 추가 : 전체 경로에 대해서 WAS에서 처리하겠다라 는 의미

    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        location / {
			proxy_pass http://localhost:8080;
 			proxy_set_header X-Real-IP $remote_addr;
 			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 			proxy_set_header Host $http_host;
 		}

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

 

 

[참고]

 - https://st-soul.tistory.com/78

반응형