본문 바로가기
Server&Infra/Nginx

Linux/CentOS 7 Nginx 설치 및 설정

by Deoking 2022. 11. 18.
반응형

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

가장 기본적인 설정 방법을 정리한 내용입니다.
운영 방법에 따라 매우 다양한 방법으로 설정이 가능하며, 추후 다른 글을 통해 이어가 보겠습니다.
-
본 글은 기록을 목적으로 작성하였습니다.
작게나마 도움 되셨기를 바라며, 더 좋은 의견이나 잘못된 부분이 있다면 댓글을 남겨주세요~

 

댓글