서버 설정 가끔씩 하는 데, 가끔 까먹을 때가 있어 기재해놓는다. 나의 개발환경은
리눅스(CentOS),Nginx, 도커, 스벨트,스프링부트, MariaDB 환경이다.
(도메인 갱신은 Let's encrypt)
- ELCAP 방화벽 설정

2. 서버에 firewalld 설치
sudo yum install firewalld // 설치
sudo systemctl start firewalld // 시작
sudo systemctl enable firewalld // 재부팅해도 자동실행하도록 등록
3. 특정포트 허용(위의 ELCAP 방화벽 관리의 포트를 허용해준다고 보면 됌)
4. 특정 서비스 허용(http,https 등)
했을 때 success 라고 나오면 된 것임
5. firewalld 업데이트
이제 방화벽을 업데이트하자
6. firewalld 업데이트 후 등록된 리스트 확인

방화벽 설정은 이제 끝났다.
이쯤에서, 소프트웨어 패키지 도구인 epel 을 설치해보자
7. epel-release 설치
중간에 질문을 할텐데, y눌러주면 됌
8. MariaDB 버전 설정
cd /etc/yum.repos.d // 해당경로 이동
touch MariaDB.repo // MariaDB 설정용 파일 생성
vim MariaDB.repo // 해당 파일 접근
vim으로 접근한 MariaDB.repo에 아래 내용 작성
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.6/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
나의 경우 10.6버전대를 사용, 위와 같이 설정한다.
9. mariadb 설치

epel 로 설치되는 것을 볼 수 있다.
10. 시스템 등록 및 시작
sudo systemctl enable mariadb // 재부팅시에도 동작하게 등록
11. 비밀번호 설정
MariaDB의 경우 초기비밀번호는 공백이기 때문에 개나소나 들어올 수 있다.
바로 비밀번호 설정을 해준다.

위와 같이 root 비밀번호 세팅할거냐 물어보면. y 눌러주고 현재 비밀번호가 공백이기 때문에
그냥 엔터누르면 바꿀 비밀번호 입력하고 확인 비밀번호까지 입력하면 성공처리된다.
그 외 보안옵션이 있지만 취향껏 설정한다.
12. 최종체크

데이터베이스 세팅 및 테이블 세팅은 별개로 한다.(자기 개발환경에 맞춰서)
13. Nginx 설치
설치전 내 블로그를 참조해보고 진행하면 좋다.
14. Nginx 경로 이동
15. default.conf 파일 생성
디렉토리로 접근했는데, default.conf 파일이 없을 경우 만들어준다. 있으면 안 만들어도 됌
16. default.conf 파일 수정(중요)
17. 각 도메인별 서버 설정한다.
server {
if ($http_user_agent ~* (AhrefsBot|BLEXBot|DotBot|SemrushBot|Eyeotabot|PetalBot|MJ12bot|brands-bot|bbot|AhrefsBo|MegaIndex|UCBrowser|Mb2345Browser|MicroMessenger|LieBaoFast|Headless|netEstate|newspaper|Adsbot/3.1|WordPress/|ltx71) ) {
return 403;
}
listen 80 default_server;
server_name *.도메인.kr;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name test.도메인.kr;
ssl_certificate /etc/letsencrypt/live/test.도메인.kr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test.도메인.kr/privkey.pem;
ssl_session_timeout 1440m;
ssl_session_cache shared:SSL:50m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
proxy_pass http://localhost:8081/;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_http_version 1.1;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name test.도메인.kr;
ssl_certificate /etc/letsencrypt/live/test.도메인.kr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test.도메인.kr/privkey.pem;
ssl_session_timeout 1440m;
ssl_session_cache shared:SSL:50m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
proxy_pass http://localhost:3000/;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_http_version 1.1;
}
}
18. Let's encrypt 설치
설정은 다했는데.. nginx -t 로 테스트를 해보면 실패할 것이다.
왜냐하면 아직 Let's encrypt로 설정을 안했기 때문이다.
자세한내용은 여기 참고
지난 포스팅에 이어 진행해보자. https://blog.naver.com/ohks486/222832867066 요즘 웹사이트들은 보안인...
blog.naver.com
19. 도메인 등록
만약 80포트 관련 에러가 나올 경우, nginx stop 후 다시 진행한다.
위와 같이하면 인증서가 나오는데, nginx 에서 서버설정 시 인증서 경로를 추가해주자

20. Docker 설치
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
21. Docker 서비스 시작 및 등록
sudo systemctl enable docker
22. Docker login
docker 로 실행하기 때문에 Node.js, 자바 등은 별도로 설치하지 않는다.
이상 끝~
** 혹시 서비스 접근했는데 502 에러 나올 시 조치방법이다. **
vi /var/log/nginx/error.log 내용
나의 경우 https만 안되었다.
sestatus // SEL Linux 상태확인
sestatus를 하면 위에 sentenforce를 0으로 했기 때문에 아래와 같이 간단하게만 나올 것이다.

그럼 이제 이부분을 편집해보자.
RHEL/CentOS 8 일경우
RHEL/CentOS 7 일경우
아래 SELINUX = enforcing 으로 수정한다.

그다음, 서버를 재시작한다.
'서버 > 리눅스' 카테고리의 다른 글
[Nginx] 악성봇 & 스팸봇 차단 (0) | 2025.02.11 |
---|---|
[리눅스] 사용자 계정 추가하기 (0) | 2025.02.11 |
[Nginx] Let's Encrypt 인증서 강제 갱신 (0) | 2025.02.11 |
[Nginx] client intended to send too large body (0) | 2025.02.11 |
[Nginx] HTTPS -> HTTP로 데이터 요청할 때 (0) | 2025.02.11 |