코딩마을방범대

우분투에서 Nginx 구축 본문

💡 백엔드/우분투

우분투에서 Nginx 구축

신짱구 5세 2023. 6. 12. 15:01

웹서버 Nginx & Apache (이전 포스트)

 


 

1. Nginx 설치

apt 업데이트 후 Nginx 설치

Nginx 설치 시 자동으로 실행됨

$ sudo apt update
$ sudo apt-get install nginx

 

Nginx 실행

$ sudo service nginx start
# or
$ sudo systemctl start nginx

 

서버 시작 시 자동으로 Nginx 를 실행하고 싶은 경우

$ sudo systemctl enable nginx

 

서버 시작 시 Nginx가 자동으로 실행되지 않게 하고싶은 경우

$ sudo systemctl disable nginx

 

설치된 Nginx 버전 확인

$ sudo dpkg -l nginx

 

 


 

 

2. 방화벽 설정

방화벽 상태 체크

$ sudo ufw status

 

방화벽 활성화

$ sudo ufw enable

 

방화벽 설정 가능 리스트 출력

$ sudo ufw app list
Nginx HTTP: 포트 80번만 허용 (암호화되지 않은 웹 트래픽)
Nginx HTTPS: 포트 443번만 허용 (SSL/TLS 암호화용)
Nginx Full: 포트 80, 443번 허용

 

Nginx 방화벽 설정 적용

$ sudo ufw allow 'Nginx HTTP'

 

 

해당 방화벽을 연 IP 주소로 접속 시

짜잔 

 

 

※ 포트 충돌 문제로 실행이 불가할 경우

아래 명령어를 통해 현재 포트를 통해 실행하고 있는 프로세스 확인 후 kill 실행

$ sudo ss -lptn 'sport = :80'

 

 


 

 

 

3. Nginx 설정

Nginx 관련한 로그 경로는 /var/log/nginx

access.log: 웹 서버에 대한 모든 요청을 기록
error.log: Nginx에서 발생한 모든 오류를 기록

Nginx 관련한 디렉토리 경로는 /etc/nginx

conf.d : sites-enabled와 같이 nginx에 반영되는 작업들이 있지만 비활성해야 하는 경우 삭제하거나 변경해야 함
sites-enabled : 설정 파일을 복사 또는 심볼릭 링크로 걸어줌(nginx에 반영)
sites-available : 설정을 저장하는 곳(nginx에 반영 X)

conf.d 디렉토리를 사용하지 않고 sites-enabled와 sites-available를 메인으로 사용 시

sites-*로 디렉토리 추상화를 통해 작업을 체계화하고 별도의 지원 스크립트로 관리 가능

 

 

 

sites-enabled 디렉토리를 Nginx 설정 파일 경로로 사용하기 위해 nginx.conf(Nginx의 기본 설정 파일)에 설정 필요

conf.d 디렉토리에 대해서는 비활성화를 위해 #을 붙여 주석 처리 해주거나 아예 해당 라인을 지워주기

$ sudo vi /etc/nginx/nginx.conf
http {
         ...
         #gzip on;

         #include /etc/nginx/conf.d/*.conf;
         // ↓ 이부분 추가
         include /etc/nginx/sites-enabled/*;
         server_names_hash_bucket_size 64;
}

 

 


 

 

4-1. 정적 서버 연동

1. 연결할 html 폴더 생성

$ sudo mkdir -p /var/www/[도메인 이름]/html

 

2. 소유자 설정

$ sudo chown -R $USER:$USER /var/www/[도메인 이름]/html

 

3. 권한 설정

$ sudo chmod -R 755 /var/www/[도메인 이름]

 

4. index.html 생성

$ sudo vi /var/www/[도메인 이름]/html/index.html

예시 html

<html>
       <head>
              <title>Test Successful!</title>
       </head>
       <body>
             <h1>You're amazing</h1>
       </body>
</html>

 

5. 커스텀 설정 파일 생성

$ sudo vi /etc/nginx/sites-available/[도메인 이름]

내용

server {
         listen 80;
         listen [::]:80;

         root /var/www/[도메인 이름]/html;
         index index.html index.htm index.nginx-debian.html;

         server_name [도메인 이름] www.[도메인 이름];

         location / {
                  try_files $uri $uri/ =404;
         }
}
location / {...}
/ 대신 /app 등 주소를 넣으면 됨

ex)
ip: 10.10.0.10
location /app {...}
10.10.0.10:80/app 을 호출하면 이동

 

 

생성한 conf 파일에 대한 심볼릭 링크 설정

$ sudo ln -s /etc/nginx/sites-available/[도메인 이름] /etc/nginx/sites-enabled/

 

 


 

 

 

4-2. 동적 서버 연동

$ sudo vi /etc/nginx/nginx.conf

내용

html{
         ...
         server {
                  # 서버주소: web서버 [ ex) listen 10.10.0.10:80; ]
                  listen [서버주소]:80;

                  location / {
                           # 연결시킬 서버주소: was서버
                           proxy_pass [연결시킬 서버주소]:[포트번호]; [ ex) proxy_pass 10.10.0.20:8080; ]
                  }
         }

 

 


 

 

 

설정 파일 문법 오류 체크

$ sudo nginx -t

 

Nginx 재실행

$ sudo service nginx restart
# or
$ sudo systemctl restart nginx

 

 

http://도메인 이름 으로 실행!

 

 

 


 

참고사이트

[Ubuntu] Nginx 설정

Ubuntu 20.04에서 Nginx 설치 및 설정하기

 

 

 

 

 

 

 

 

 

SMALL