Overview
CentOS 7 서버 환경에 Nginx를 설치하고 기본 설정 방법에 대해 정리했습니다.
1. yum 외부 저장소 추가/설치
yum 저장소에는 nginx가 없기 때문에 외부 저장소를 추가해야 한다.
sudo vim /etc/yum.repos.d/nginx.repo
stable 버전과 main line 버전중 설치하고자 하는 저장소로 추가한다.
# stable version
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
# OR
# main line version
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1
아래 명령어로 nginx 를 설치한다.
sudo yum install -y nginx
설치 후 완료 후 아래 명령어로 상태를 확인한다.
# nginx 버전 확인.
nginx -version
# nginx 기본 명령어.
sudo systemctl start nginx # nginx 시작
sudo systemctl enable nginx # 부팅시 자동실행
sudo systemctl status nginx # 상태 확인
sudo systemctl stop nginx # nginx 중지
# 실행 중 에러확인.
journalctl -xe
2. 웹 서버 설정
기본 서버 설정 파일이 위치 : vim /etc/nginx/conf.d/default.conf
기본 웹 루트 디렉토리 : /usr/share/nginx/html
웹서버 기본 설정을 확인할 수 있으며, 포트 및 도메인 설정등 nginx 의 설정을 변경할 수 있습니다.
# 설정파일 열기
sudo vim /etc/nginx/nginx.conf
# /etc/nginx/nginx.conf
server {
# 포트 및 서버네임(도메인) 설정.
listen 80;
server_name domain.com;
# 기본 인코딩 설정
charset utf-8;
access_log /var/log/nginx/admin.access.log main;
error_log /var/log/nginx/admin.error.log warn;
location / {
proxy_redirect off;
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_set_header X-Forwarded-Proto $scheme;
# 프록시 연결 설정.
proxy_pass http://127.0.0.1:8080;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
3. 방화벽 설정
firewall설치가 안되어 있는 경우가 있어 확인 후 아래 명령어로 설치한다.
# 설치
sudo yum install firewalld
# 서비스 시작
systemctl start firewalld
# 부팅 시 서비스 자동 시작.
systemctl enable firewalld
아래 명령어로 방화벽 포트를 설정한다.
# 포트 개방
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
# 방화벽 재시작
sudo firewall-cmd --reload
# 개방된 포트 목록 확인
sudo firewall-cmd --list-ports
4. Selinux 설정
SELinux 는 Linux의 보안을 강화해 주는 보안 강화 커널이고 zero-day 공격 및 buffer overflow 등 어플리케이션 취약점으로 인한 해킹을 방지해 주는 핵심 구성요소이다.
특정 서비스가 SELinux 때문에 동작하지 않는다면 SELinux 를 끄기 보다는 해당 서비스가 SELinux 하에서 잘 동작하도록 설정을 수정하는걸 권장한다.
SELinux 의 context 에 의해 apache httpd 가 연결 할 수 있는 port 확인
sudo semanage port -l|grep http_port_t
# ex) http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
semanage로 사용하고자 하는 포트(ex.8181)로 binding된 context가 있는지 확인.(없을 경우 사용가능)
sudo semanage port -l |grep 8181
httpd_port_t에 사용하고자 하는 포트(ex.8181)를 추가.
sudo semanage port -a -p tcp -t http_port_t 8181
httpd_port_t에 포트(ex.8181)를 삭제.
새로 등록한 포트 외 기존 사용 포트는 삭제하지 않는 것을 권장.
sudo semanage port -d -p tcp -t http_port_t 8181
Conclusion
가장 기본적인 설정 방법을 정리한 내용입니다.
운영 방법에 따라 매우 다양한 방법으로 설정이 가능하며, 추후 다른 글을 통해 이어가 보겠습니다.
-
본 글은 기록을 목적으로 작성하였습니다.
작게나마 도움 되셨기를 바라며, 더 좋은 의견이나 잘못된 부분이 있다면 댓글을 남겨주세요~
'Server&Infra > Nginx' 카테고리의 다른 글
Nginx에 Let's Encrypt SSL(https) 보안 인증서 적용하기(with certbot 인증서 자동갱신) (0) | 2022.11.22 |
---|
댓글