Amazon Linux 2 서버에 Nginx 설치
- Nginx 설치 파일로 설치하거나 패키지를 이용하여 설치할 수 있다. 이번 포스팅에서는 패키지로 설치를 진행한다.
Nginx 설치는 아래 공식 사이트에 자세하게 나와있다.
https://www.nginx.com/resources/wiki/start/topics/tutorials/install/
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 {
}
}
[참고]
'WEB > Nginx' 카테고리의 다른 글
[Nginx] Nginx Version Upgrade (0) | 2023.12.25 |
---|---|
[Nginx] nginx 헤더 정보 노출 방지 방법 (0) | 2023.08.03 |
[Nginx] nginx의 mainline 버전과 stable 버전 비교 (0) | 2023.08.02 |