IT 공부방 [기본지식 정리]/Web Server

002. [Linux-Ubuntu] NginX 설치 및 운용

cTosMaster 2025. 4. 6. 15:28

1. 설치 [CLI 수행]

   1) 패키지 관리자 update

   apt update

 

   2) NginX 패키지 확인 -> 외부 리포지토리에 어떤 버전이 있는지?

   apt list | Grep nginx*

 

   3) NginX 설치

   apt install nginx -y

 

   4) NginX 동작 확인

   nginx -v

   systemctl status nginx

   -> active(running) 상태가 아니라면 -> systemctl start nginx 한 후 다시확인

 

   5) 외부에서 접근하게 하려면 기업이 아닌 개인사용자의 경우, 공유기에서 필요한 TCP-80 포트포워딩이 필요함. 

   -> 외부에 서버를 공개적으로 열 때에, 공개 서비스가 아닌 테스트라면 접근가능한 일부 사용자들을 위한

        웹 서버 자체에서 방화벽 정책을 수립하는 것이 좋다.  (UFW, IPtables...)

        수립하지 않을 경우 : 엄청난 트래픽이 당신의 서버에 브루트 포스 공격을 할 것이다.

        실제 기업에서는 공개 서버를 DMZ 영역에 두고 상단에 방화벽, IPS, IDS, DDoS 보안 솔루션 장비를 설치한다.

2. Tomcat 연동 (Reverse-Proxy 443 -> 8080, 8081...)

1) NginX 설정 수정

(a) application.yml -> application.yml : "server.port = 8080" 설정 후 저장

 

(b) vi /etc/nginx/sites-available/jaybee & ln -s /etc/nginx/sites-available/jaybee /etc/nginx/sites-enabled/

[아래 부분 추가]
server {
    listen 443 ssl;
    server_name jaybee.com;

    ssl_certificate     /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    # 정적 리소스 서빙
    location /static/ {
        root /var/www/html;
        try_files $uri $uri/ =404;
    }

    location /images/ {
        root /var/www/html/static;
    }

    location /css/ {
        root /var/www/html/static;
    }

    location /js/ {
        root /var/www/html/static;
    }

    # 루트 접근 시 index.html 출력 (정적 페이지 → 없으면 백엔드)
    location / {
        root /var/www/html/static;
        index index.html;
        try_files $uri $uri/ /index.html @backend;
    }

    location @backend {
        proxy_pass http://localhost:8080;  # Spring Boot 서버
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

# HTTP → HTTPS redirect
server {
    listen 80;
    server_name your-domain.com;
    return 301 https://$host$request_uri;
}

설정 후 저장

 

(c) nginx -t  (구문 오류 있는지 확인)

 

(d) systemctl restart nginx  ->  웹 서버 재시작 

 

3. 운용 (+부가적인 설정 : 보안...)

1-1) 기본 보안 운용

    Openssl 활용 TLS1.3 권장

 

1-2) 양자 내성암호인 PQC[kyber, dilithium, bike]를 활용한 OQS + Openssl

    키 교환 연동 실험단계(알고리즘은 탑재함)

    liboqs -> 기초 알고리즘 정리되어 있는 기본 라이브러리

    이걸 적용하려면, 키 교환 알고리즘 동작에 대한 부분을 NginX 코드에 직접 추가해야 한다.

▶️ 깃허브: https://github.com/open-quantum-safe/openssl