시스템 패키지 업데이트:
sudo apt update
Nginx 설치:
sudo apt install nginx -y
Nginx 서비스 시작 및 부팅 시 자동 시작 설정:
sudo systemctl start nginx
sudo systemctl enable nginx
방화벽 설정:
UFW를 사용하는 경우, HTTP(80) 및 HTTPS(443) 트래픽을 허용해야 합니다.
sudo ufw allow 'Nginx Full'
Nginx 서비스 상태 확인:
sudo systemctl status nginx
Active: active (running) 상태인지 확인합니다.
이러한 단계를 완료하면 Ubuntu 24.04에 Nginx가 성공적으로 설치되고 실행됩니다.
Nginx는 고성능의 오픈 소스 웹 서버로, 정적 콘텐츠 제공, 리버스 프록시, 로드 밸런싱 등 다양한 기능을 제공합니다. Ubuntu에 Nginx를 설치하고 사용하는 방법은 다음과 같습니다.
1. Nginx 설치
먼저, 패키지 목록을 업데이트한 후 Nginx를 설치합니다.
sudo apt update
sudo apt install nginx
설치가 완료되면 Nginx 서비스가 자동으로 시작됩니다. 상태를 확인하려면 다음 명령어를 사용하세요.
sudo systemctl status nginx
2. 방화벽 설정
UFW(Uncomplicated Firewall)를 사용 중이라면, HTTP(80번 포트)와 HTTPS(443번 포트)에 대한 접근을 허용해야 합니다.
sudo ufw allow 'Nginx Full'
방화벽 상태를 확인하려면 다음 명령어를 사용하세요.
sudo ufw status
3. Nginx 기본 페이지 확인
웹 브라우저에서 서버의 IP 주소를 입력하여 Nginx의 기본 환영 페이지가 나타나는지 확인합니다. 예를 들어, 서버의 IP 주소가 192.168.1.100이라면, 브라우저에서 http://192.168.1.100을 입력합니다.
4. Nginx 서버 블록 설정
여러 웹사이트를 호스팅하려면 서버 블록을 설정해야 합니다. 서버 블록은 Apache의 가상 호스트와 유사한 개념입니다.
웹 콘텐츠 디렉토리 생성 및 권한 설정
sudo mkdir -p /var/www/your_domain/html
sudo chown -R $USER:$USER /var/www/your_domain/html
sudo chmod -R 755 /var/www/your_domain
테스트용 index.html 파일 생성
nano /var/www/your_domain/html/index.html
다음과 같은 내용을 입력합니다.
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>
서버 블록 설정 파일 생성
sudo nano /etc/nginx/sites-available/your_domain
다음과 같은 내용을 입력합니다.
server {
listen 80;
server_name your_domain www.your_domain;
root /var/www/your_domain/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
심볼릭 링크 생성 및 Nginx 재시작
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
이제 브라우저에서 http://your_domain을 입력하면 설정한 페이지가 나타납니다.
5. Nginx 관리 명령어
sudo systemctl start nginxsudo systemctl stop nginxsudo systemctl restart nginxsudo nginx -t이러한 단계를 통해 Ubuntu에서 Nginx를 설치하고 기본적인 설정을 완료할 수 있습니다. 더 자세한 내용은 iter.kr의 우분투 Nginx 설치 가이드를 참고하시기 바랍니다.
1. ip 명령어 사용
터미널을 열고 다음 명령어를 입력하세요:
ip addr show
이 명령어는 모든 네트워크 인터페이스의 상세 정보를 표시합니다. 출력 결과에서 inet으로 시작하는 항목이 해당 인터페이스의 IP 주소입니다. 예를 들어, inet 192.168.1.100/24는 IP 주소가 192.168.1.100임을 나타냅니다.
2. hostname 명령어 사용
IP 주소만 간단하게 확인하려면 다음 명령어를 사용할 수 있습니다:
hostname -I
이 명령어는 시스템의 IP 주소를 공백으로 구분하여 출력합니다. 예를 들어, 192.168.1.100과 같은 형식으로 표시됩니다.
3. ifconfig 명령어 사용
전통적인 방법으로 ifconfig 명령어를 사용할 수 있습니다. 다만, 최신 Ubuntu 버전에서는 기본적으로 설치되어 있지 않을 수 있으므로, 먼저 설치해야 합니다:
sudo apt install net-tools
ifconfig
출력 결과에서 inet으로 시작하는 항목이 해당 인터페이스의 IP 주소입니다.
이러한 방법들을 통해 서버의 IP 주소를 확인한 후, 웹 브라우저에서 해당 IP 주소를 입력하여 Nginx의 기본 환영 페이지가 나타나는지 확인할 수 있습니다.
Nginx 설정 파일에서 your_domain은 사용자가 실제로 소유하거나 관리하는 도메인 이름을 의미합니다. 이는 설정 예시에서 사용되는 자리표시자(placeholder)로, 실제 도메인 이름으로 대체해야 합니다. 예를 들어, your_domain을 example.com으로 변경하여 설정하면 해당 도메인에 대한 서버 블록이 구성됩니다. 이러한 방식으로 Nginx는 여러 도메인을 하나의 서버에서 관리할 수 있습니다.
특정 폴더에 있는 모든 파일을 Nginx 서버에 업로드하려면 파일을 웹 서버의 root 디렉토리로 복사하거나 이동해야 합니다. Nginx 자체는 파일 업로드 기능을 제공하지 않으므로, 파일을 올린 후 Nginx가 이를 정적 파일로 서빙하도록 설정합니다.
기본적으로 Nginx는 정적 파일을 제공하기 위해 root 디렉토리를 사용합니다.
/etc/nginx/nginx.conf 또는 개별 server 블록의 설정 파일에서 root 디렉토리를 확인합니다.
예시:
server {
listen 80;
server_name example.com;
root /var/www/html; # 정적 파일의 경로
index index.html;
}
여기서 /var/www/html이 Nginx가 정적 파일을 제공하는 디렉토리입니다.
특정 폴더의 모든 파일을 root 디렉토리로 복사합니다.
cp -r /path/to/your/folder/* /var/www/html/
/path/to/your/folder/는 업로드하려는 파일이 있는 폴더 경로./var/www/html/는 Nginx의 root 디렉토리.파일을 복사한 후, 설정이 올바른지 확인합니다.
sudo nginx -t
파일 복사 후 Nginx를 다시 시작하여 설정을 적용합니다.
sudo systemctl restart nginx
http://your-server-ip/filename으로 접속하여 파일이 제공되는지 확인합니다.http://192.168.0.1/image.jpg파일이 많아 FTP/SFTP를 사용하거나 스크립트를 통해 자동화하는 것이 편리할 수 있습니다.
FileZilla 또는 scp를 사용해 Nginx 서버에 파일을 업로드.
Python 스크립트를 사용해 자동으로 파일을 업로드할 수도 있습니다.
import os
import shutil
source_folder = "/path/to/your/folder"
nginx_root = "/var/www/html"
for filename in os.listdir(source_folder):
full_file_name = os.path.join(source_folder, filename)
if os.path.isfile(full_file_name):
shutil.copy(full_file_name, nginx_root)
Nginx가 다른 경로에서 파일을 제공하도록 설정하려면 location 블록을 수정하십시오.
server {
listen 80;
server_name example.com;
location /uploads/ {
root /path/to/your/folder;
autoindex on; # 디렉토리 내용 표시
}
}
/uploads/로 접속하면 /path/to/your/folder의 파일이 표시됩니다.sudo systemctl restart nginx 명령으로 Nginx를 재시작합니다.Nginx 설정 파일은 일반적으로 확장자 없이 작성하거나 .conf 확장자를 사용합니다.
.conf를 사용하는 것이 일반적입니다./etc/nginx/nginx.conf (기본 설정 파일)/etc/nginx/conf.d/example.conf (추가 설정 파일)Nginx 설정 파일은 일반적으로 다음 위치 중 하나에 저장됩니다:
기본 설정 파일 (nginx.conf):
/etc/nginx/nginx.conf추가 설정 파일 (.conf):
/etc/nginx/conf.d/ 폴더/etc/nginx/conf.d/example.com.conf기본적으로 nginx.conf에서 /etc/nginx/conf.d/*.conf를 포함하도록 설정되어 있습니다:
include /etc/nginx/conf.d/*.conf;
.conf 확장자를 사용하는 것이 좋습니다.example.confdefault.confVisual Studio Code 또는 텍스트 편집기로 파일을 작성한 후, 저장할 때 파일 이름에 확장자를 .conf로 지정하는 것을 추천합니다.
example.conf로 저장./etc/nginx/conf.d/ 폴더에 복사:sudo mv example.conf /etc/nginx/conf.d/Nginx는 다음 순서로 설정 파일을 읽습니다:
1. /etc/nginx/nginx.conf
2. include로 지정된 경로의 모든 .conf 파일 (예: /etc/nginx/conf.d/*.conf).
요약: Nginx 설정 파일은 .conf 확장자를 사용하는 것이 일반적입니다. /etc/nginx/nginx.conf는 기본 설정 파일이고, 추가 설정 파일은 /etc/nginx/conf.d/에 .conf 확장자로 저장하세요.
Nginx를 통해 정적 파일을 제공하려면, momoServer 폴더 내에 다음과 같은 구조를 갖추는 것이 좋습니다:
momoServer/
├── nginx/
│ ├── conf.d/
│ │ └── your_domain.conf
│ └── logs/
├── html/
│ └── index.html
└── scripts/
└── deploy.py
각 폴더와 파일의 역할:
nginx/: Nginx와 관련된 설정 및 로그 파일을 저장합니다.
your_domain.conf 파일에는 특정 도메인에 대한 설정이 포함됩니다.html/: Nginx가 제공할 정적 파일(예: HTML, CSS, 이미지 등)을 보관합니다. 기본적으로 index.html 파일이 위치하며, 추가적인 정적 파일을 이 폴더에 저장할 수 있습니다.
scripts/: 배포나 관리와 관련된 스크립트를 저장합니다. 예를 들어, deploy.py는 파일을 복사하거나 설정을 자동화하는 Python 스크립트입니다.
Python 스크립트(deploy.py)의 예시:
import os
import shutil
source_folder = "/path/to/your/folder"
nginx_root = "/var/www/html"
for filename in os.listdir(source_folder):
full_file_name = os.path.join(source_folder, filename)
if os.path.isfile(full_file_name):
shutil.copy(full_file_name, nginx_root)
주의사항:
경로 설정: nginx_root를 /Home/Dropbox/momoLinuxfiles/momoServer/html로 설정하여, 정적 파일이 html 폴더에 복사되도록 합니다.
Nginx 설정 파일: nginx/conf.d/your_domain.conf 파일에서 root 디렉토리를 html 폴더로 지정해야 합니다. 예를 들어:
server {
listen 80;
server_name example.com;
location /uploads/ {
root /path/to/your/folder;
autoindex on; # 디렉토리 내용 표시
}
}
이러한 구조를 통해 Nginx는 html 폴더 내의 정적 파일을 제공하게 됩니다.
Nginx를 통해 여러 개의 HTML 파일을 제공하려면, 각 파일을 웹 서버의 root 디렉토리에 배치하고, 해당 파일에 접근할 수 있도록 설정해야 합니다.
1. Nginx 설정 확인 및 수정
Nginx의 설정 파일에서 root 디렉토리를 확인하거나 설정합니다.
설정 파일 위치: 일반적으로 /etc/nginx/nginx.conf 또는 /etc/nginx/conf.d/your_domain.conf에 위치합니다.
설정 예시:
server {
listen 80;
server_name your_domain;
root /var/www/your_domain/html;
index index.html;
}
여기서 root 지시어는 Nginx가 정적 파일을 제공할 디렉토리를 지정합니다.
2. HTML 파일 배치
root 디렉토리에 여러 개의 HTML 파일을 배치합니다.
디렉토리 구조 예시:
/var/www/your_domain/html/
├── index.html
├── about.html
├── contact.html
└── products/
├── product1.html
└── product2.html
index.html: 기본 페이지로, http://your_domain/로 접근 시 표시됩니다.about.html: http://your_domain/about.html로 접근.contact.html: http://your_domain/contact.html로 접근.products/ 디렉토리 내의 파일들은 http://your_domain/products/product1.html와 같이 접근합니다.3. Nginx 설정 테스트 및 재시작
설정을 변경한 후, Nginx 설정을 테스트하고 재시작하여 변경 사항을 적용합니다.
설정 테스트:
sudo nginx -t
테스트 결과 문제가 없으면 다음 단계로 진행합니다.
Nginx 재시작:
sudo systemctl restart nginx
4. 브라우저에서 확인
브라우저를 열고 각 HTML 파일에 접근하여 제대로 표시되는지 확인합니다.
예:
http://your_domain/http://your_domain/about.htmlhttp://your_domain/contact.htmlhttp://your_domain/products/product1.html추가 참고사항
디렉토리 인덱싱 활성화: 특정 디렉토리의 파일 목록을 자동으로 표시하려면, Nginx 설정에 autoindex on; 지시어를 추가합니다.
location /products/ {
autoindex on;
}
이렇게 설정하면 http://your_domain/products/로 접근 시 해당 디렉토리의 파일 목록이 표시됩니다.
파일 권한 설정: Nginx가 파일에 접근할 수 있도록 적절한 파일 권한을 설정해야 합니다.
sudo chown -R www-data:www-data /var/www/your_domain/html
sudo chmod -R 755 /var/www/your_domain/html
이러한 단계를 따르면 Nginx를 통해 여러 개의 HTML 파일을 효과적으로 제공할 수 있습니다.
Nginx를 통해 정적 파일을 제공하려면, momoServer 폴더 내에 다음과 같은 구조를 갖추는 것이 좋습니다:
momoServer/
├── nginx/
│ ├── conf.d/
│ │ └── your_domain.conf
│ └── logs/
├── html/
│ └── index.html
└── scripts/
└── deploy.py
각 폴더와 파일의 역할:
nginx/: Nginx와 관련된 설정 및 로그 파일을 저장합니다.
your_domain.conf 파일에는 특정 도메인에 대한 설정이 포함됩니다.html/: Nginx가 제공할 정적 파일(예: HTML, CSS, 이미지 등)을 보관합니다. 기본적으로 index.html 파일이 위치하며, 추가적인 정적 파일을 이 폴더에 저장할 수 있습니다.
scripts/: 배포나 관리와 관련된 스크립트를 저장합니다. 예를 들어, deploy.py는 파일을 복사하거나 설정을 자동화하는 Python 스크립트입니다.
Python 스크립트(deploy.py)의 예시:
import os
import shutil
source_folder = "/path/to/your/folder"
nginx_root = "/var/www/html"
for filename in os.listdir(source_folder):
full_file_name = os.path.join(source_folder, filename)
if os.path.isfile(full_file_name):
shutil.copy(full_file_name, nginx_root)
주의사항:
경로 설정: nginx_root를 /Home/Dropbox/momoLinuxfiles/momoServer/html로 설정하여, 정적 파일이 html 폴더에 복사되도록 합니다.
Nginx 설정 파일: nginx/conf.d/your_domain.conf 파일에서 root 디렉토리를 html 폴더로 지정해야 합니다. 예를 들어:
server {
listen 80;
server_name your_domain;
root /Home/Dropbox/momoLinuxfiles/momoServer/html;
index index.html;
}
이러한 구조를 통해 Nginx는 html 폴더 내의 정적 파일을 제공하게 됩니다.
Nginx 설정 및 정적 파일 제공을 위한 파일 수정 작업은 아래와 같이 진행하면 됩니다. 각각의 파일에 대해 수정할 부분과 내용은 다음과 같습니다.
nginx/conf.d/your_domain.conf)이 파일에서 Nginx가 정적 파일을 제공할 경로와 서버 설정을 지정해야 합니다.
server {
listen 80;
server_name your_domain;
root /Home/Dropbox/momoLinuxfiles/momoServer/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
access_log /Home/Dropbox/momoLinuxfiles/momoServer/nginx/logs/access.log;
error_log /Home/Dropbox/momoLinuxfiles/momoServer/nginx/logs/error.log;
}
주요 수정 사항:
server_name에 도메인 또는 IP 주소를 지정하세요. (예:server_name example.com;또는server_name 192.168.0.1;)root경로를 정적 파일 폴더(/Home/Dropbox/momoLinuxfiles/momoServer/html)로 설정합니다.- 로그 경로를 설정합니다. (
access_log,error_log)
html/index.html)Nginx가 제공할 초기 페이지를 구성해야 합니다. 기본적으로 html/index.html 파일에 내용이 있어야 합니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome to Nginx</title>
</head>
<body>
<h1>It works!</h1>
<p>This is a static file served by Nginx.</p>
</body>
</html>
주요 수정 사항:
index.html파일이 없으면 새로 만들어야 합니다.- 필요하면 CSS, JS 등의 정적 파일을 추가로
html/폴더에 넣으세요.
scripts/deploy.py)Python 스크립트를 수정하여 새 정적 파일을 Nginx의 html/ 폴더로 복사합니다.
import os
import shutil
# 원본 파일이 위치한 경로
source_folder = "/path/to/your/source_files"
# Nginx가 정적 파일을 제공하는 경로
nginx_root = "/Home/Dropbox/momoLinuxfiles/momoServer/html"
# 소스 폴더에 있는 파일들을 Nginx 폴더로 복사
for filename in os.listdir(source_folder):
full_file_name = os.path.join(source_folder, filename)
if os.path.isfile(full_file_name):
shutil.copy(full_file_name, nginx_root)
else:
# 디렉토리일 경우 재귀적으로 복사
dest_dir = os.path.join(nginx_root, filename)
shutil.copytree(full_file_name, dest_dir, dirs_exist_ok=True)
print("Files deployed successfully!")
주요 수정 사항:
source_folder를 실제 파일이 있는 경로로 수정하세요. (예:/path/to/your/source_files→/Home/user/static_files)nginx_root를 Nginx가 정적 파일을 제공하는 경로로 설정합니다.
nginx/nginx.conf, 필요 시)만약 메인 설정 파일(nginx.conf)도 수정이 필요하다면, 아래 부분을 확인하고 필요한 경우 추가합니다.
http {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /Home/Dropbox/momoLinuxfiles/momoServer/nginx/logs/access.log main;
}
momoServer/html/ 폴더 아래에 제공하려는 정적 파일을 넣어야 합니다. 예시:
momoServer/
├── html/
│ ├── index.html # 메인 페이지
│ ├── styles.css # CSS 파일
│ ├── app.js # JavaScript 파일
│ └── images/ # 이미지 폴더
│ ├── logo.png
│ └── background.jpg
수정이 끝난 후에는 nginx -t로 설정 파일을 확인하고, Nginx 서비스를 재시작하세요:
sudo nginx -t
sudo systemctl reload nginx
이제 브라우저에서 결과를 확인하면 됩니다. 😊
Nginx를 통해 정적 파일을 외부에서 접근 가능하도록 설정하려면 다음 단계를 수행해야 합니다.
Nginx의 설정 파일을 열어 서버 블록을 구성합니다.
Nginx의 기본 설정 파일은 일반적으로 /etc/nginx/nginx.conf에 위치하며, 서버 블록 설정은 /etc/nginx/sites-available/ 디렉토리에 저장됩니다. 기본적으로 제공되는 서버 블록 설정 파일은 /etc/nginx/sites-available/default입니다. 이 파일을 편집하려면 다음 명령어를 사용하십시오:
sudo nano /etc/nginx/sites-available/default
편집기에서 다음과 같은 기본 설정을 확인하거나 수정할 수 있습니다:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
location = /404.html {
internal;
}
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
}
설명:
listen 80 default_server; 및 listen [::]:80 default_server;: IPv4와 IPv6 모두에서 80번 포트로 수신 대기합니다.
root /var/www/html;: 웹 콘텐츠의 기본 루트 디렉토리를 설정합니다.
index index.html index.htm index.nginx-debian.html;: 기본 인덱스 파일의 우선순위를 지정합니다.
server_name _;: 모든 도메인 요청을 처리하도록 설정합니다.
location / { try_files $uri $uri/ =404; }: 요청된 URI를 파일이나 디렉토리로 매핑하고, 없을 경우 404 오류를 반환합니다.
error_page 404 /404.html;: 404 오류 발생 시 표시할 페이지를 지정합니다.
error_log /var/log/nginx/error.log; 및 access_log /var/log/nginx/access.log;: 오류 및 접근 로그의 저장 위치를 지정합니다.
설정을 완료한 후에는 Nginx 설정 파일의 문법을 확인하고, 문제가 없다면 서비스를 재시작하여 변경 사항을 적용해야 합니다:
sudo nginx -t
sudo systemctl restart nginx
이러한 과정을 통해 Nginx의 기본 설정을 확인하고 수정할 수 있습니다.
주의사항:
server_name에 도메인 이름이나 서버의 공인 IP 주소를 입력합니다.root경로를 정적 파일이 위치한 디렉토리로 설정합니다.
서버의 방화벽이 80번 포트(HTTP)를 허용하도록 설정해야 합니다.
sudo ufw allow 80/tcp
sudo ufw reload
sudo ufw enable
참고: UFW를 사용하지 않는 경우, 사용 중인 방화벽 관리 도구를 통해 80번 포트를 허용해야 합니다.
서버가 NAT(Network Address Translation) 뒤에 있는 경우, 공유기에서 포트 포워딩을 설정해야 외부에서 접근이 가능합니다.
주의사항: 공유기마다 설정 방법이 다를 수 있으므로, 해당 공유기의 매뉴얼을 참고하시기 바랍니다.
설정 변경 후, Nginx 설정을 테스트하고 서비스를 재시작합니다.
sudo nginx -t
문제가 없다면 다음 명령어로 Nginx를 재시작합니다:
sudo systemctl restart nginx
Ubuntu에서 Apache2를 완전히 제거하려면 다음 단계를 따르세요:
Apache2 서비스 중지:
sudo service apache2 stop
Apache2 패키지 및 관련 구성 파일 제거:
sudo apt-get remove -y --purge apache2*
이 명령은 Apache2와 관련된 모든 패키지와 설정 파일을 제거합니다.
사용하지 않는 의존성 패키지 자동 정리:
sudo apt-get -y autoremove
이 명령은 더 이상 필요하지 않은 의존성 패키지를 자동으로 제거합니다.
시스템 패키지 목록 업데이트 및 업그레이드:
sudo apt update
sudo apt -y upgrade
이 단계는 시스템의 패키지 목록을 업데이트하고, 설치된 패키지를 최신 버전으로 업그레이드합니다.
브라우저를 열고 서버의 공인 IP 주소나 도메인 이름을 입력하여 접속을 시도합니다.
http://example.com 또는 http://공인_IP_주소정상적으로 설정되었다면, index.html의 내용이 표시될 것입니다.
이러한 단계를 통해 Nginx를 통해 제공하는 정적 파일에 외부에서 접근할 수 있도록 설정할 수 있습니다.
브라우저에서 접속하려면 설정한 도메인 이름이나 IP 주소를 입력하면 됩니다.
예를 들어, 위 설정대로라면:
도메인 이름 사용 시:
브라우저 주소창에 http://momo를 입력하세요.
(단, 이 경우 momo가 DNS에서 서버의 IP 주소로 매핑되도록 설정되었거나, 로컬 테스트를 위해 /etc/hosts 파일에 momo와 서버 IP 주소를 연결하는 항목을 추가해야 합니다.)
IP 주소 사용 시:
브라우저 주소창에 http://123.45.67.89를 입력하세요.
이 두 가지 방식 중 하나로 서버에 접속할 수 있습니다.
만약 로컬 테스트를 위해 /etc/hosts를 수정해야 한다면, 다음과 같이 추가합니다:
123.45.67.89 momo
이제 브라우저에서 http://momo로도 접속이 가능해집니다.
Nginx가 80번 포트에서 요청을 처리하도록 설정되어 있다면, 브라우저나 CLI 도구를 사용하여 IP 주소로 접근할 수 있습니다. 아래는 구체적인 방법입니다.
먼저 Nginx가 제대로 실행 중이고, 80번 포트를 열고 있는지 확인합니다.
sudo netstat -tuln | grep :80
0.0.0.0:80 또는 특정 IP로 바인딩되어 있는지 확인하세요.sudo systemctl status nginx
active (running) 상태인지 확인합니다.Nginx가 80번 포트를 사용하도록 설정되어 있다면, 브라우저 주소창에 IP 주소를 입력하면 됩니다.
http://<IP 주소>
예를 들어, 서버의 IP 주소가 123.45.67.89라면:
http://123.45.67.89
CLI에서 curl 명령어를 사용하여 Nginx 서버에 접근할 수도 있습니다.
curl 명령어:curl http://<IP 주소>
예:
curl http://123.45.67.89
Nginx 설정 파일이 올바르게 설정되어 있는지 확인해야 합니다.
/etc/nginx/sites-available/default):server {
listen 80;
server_name 123.45.67.89;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
server_name: IP 주소를 포함해야 합니다 (123.45.67.89).listen 80;: 80번 포트를 수신하도록 설정되어야 합니다.sudo nginx -tsudo systemctl reload nginx서버에서 80번 포트가 열려 있어야 외부에서 접근 가능합니다.
sudo ufw allow 80/tcp
iptables 사용 시:sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
http://<IP 주소>로 접근합니다.이 과정을 통해 IP 주소를 통해 Nginx의 80번 포트로 접근할 수 있습니다.
리눅스에서 netstat 명령어를 사용할 수 없는 경우는 해당 유틸리티가 설치되어 있지 않아서 발생합니다. netstat는 net-tools 패키지의 일부입니다. 따라서 설치하면 해결됩니다.
sudo apt update
sudo apt install net-tools
sudo yum install net-tools
sudo dnf install net-tools
설치가 완료되면 netstat 명령어를 다시 실행할 수 있습니다.
ss 명령어 사용netstat은 오래된 도구로, 현대적인 대안으로 ss 명령어가 권장됩니다. 기본적으로 대부분의 리눅스 배포판에 설치되어 있습니다.
ss로 80번 포트 확인:sudo ss -tuln | grep :80
ss는 netstat보다 빠르고, 더 많은 정보를 제공합니다.LISTEN 0 128 0.0.0.0:80 0.0.0.0:*만약 네트워크 포트를 열고 있는 프로그램을 확인하려는 경우, netstat 또는 ss 외에도 Nginx 상태를 직접 확인할 수 있습니다:
sudo systemctl status nginx
sudo lsof -i :80
netstat 명령어를 사용하려면 net-tools를 설치하세요.ss 명령어를 사용하는 것을 추천합니다.lsof로도 확인 가능합니다.외부 공인 IP로 설정했지만 80번 포트가 열리지 않는 데에는 다양한 이유가 있을 수 있습니다. 다음은 주요 원인과 해결 방법입니다.
Nginx 설정 파일에 listen 80; 또는 올바른 IP 주소가 지정되지 않았을 수 있습니다.
Nginx 설정 파일 확인:
sudo nano /etc/nginx/sites-available/default
설정이 다음과 비슷한지 확인합니다:
server {
listen 80;
server_name <공인_IP>;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
설정 테스트 및 적용:
sudo nginx -t
sudo systemctl reload nginx
서버 방화벽이 80번 포트를 차단하고 있을 수 있습니다.
UFW 사용 시:
sudo ufw allow 80/tcp
sudo ufw reload
상태 확인:
sudo ufw status
iptables 사용 시:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables-save
Firewalld 사용 시 (RHEL/CentOS):
sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload
상태 확인:
sudo firewall-cmd --list-all
AWS, GCP, Azure 같은 클라우드 서버를 사용 중이라면 해당 제공업체의 보안 그룹(Security Group)이나 네트워크 방화벽이 80번 포트를 차단했을 수 있습니다.
AWS 예시:
TCP800.0.0.0/0 (모든 IP) 또는 특정 IP 대역GCP 예시:
80 허용서버가 로컬 네트워크에 있고, 라우터에서 공인 IP로 연결된 경우 포트 포워딩 설정이 필요합니다.
192.168.x.x).80192.168.x.x)80일부 인터넷 서비스 제공업체(ISP)는 보안이나 상업적 이유로 80번 포트를 차단합니다.
포트 차단 확인:
외부 네트워크에서 서버의 80번 포트를 확인:
telnet <공인_IP> 80
또는:
curl http://<공인_IP>
대안:
server {
listen 8080;
server_name <공인_IP>;
}방화벽에서 해당 포트를 허용:sudo ufw allow 8080/tcpNginx 서비스가 실행되지 않았거나 충돌이 발생.
Nginx 상태 확인:
sudo systemctl status nginx
로그 확인:
sudo journalctl -u nginx
Nginx 재시작:
sudo systemctl restart nginx
외부에서 접근 가능 여부를 확인하려면 다음 방법을 사용합니다:
curl -I http://<공인_IP>위 단계를 순서대로 점검하면 외부 공인 IP에서 80번 포트를 통해 Nginx에 접근하는 문제를 해결할 수 있을 것입니다.
sudo firewall-cmd --list-all 명령어가 작동하지 않는 경우, Firewalld가 설치되어 있지 않거나, 활성화되어 있지 않은 상태일 가능성이 있습니다. 이를 해결하려면 아래 단계를 따르세요.
sudo firewall-cmd --version
sudo apt update
sudo apt install firewalldsudo yum install firewalld또는:sudo dnf install firewalldFirewalld가 설치되어 있어도 비활성화된 상태일 수 있습니다. 이를 활성화하려면:
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo systemctl status firewalld
active (running) 상태인지 확인하세요.일부 시스템에서는 Firewalld 대신 UFW 또는 iptables를 사용할 수 있습니다.
sudo ufw status
sudo iptables -L -n
서버가 방화벽 설정 없이 동작하고 있을 수도 있습니다. 이 경우 방화벽 도구를 새로 설치하고 설정해야 합니다.
이 단계를 순서대로 확인한 뒤에도 문제가 해결되지 않으면 시스템 환경이나 오류 메시지를 공유해 주시면 추가로 도와드리겠습니다!
리눅스 서버에서 80번 포트를 외부로 열기 위해서는 방화벽 설정, 네트워크 라우팅, 그리고 서버 애플리케이션 설정을 올바르게 구성해야 합니다. 아래는 포트를 여는 일반적인 방법입니다.
80번 포트를 추가:
sudo firewall-cmd --add-port=80/tcp --permanent
설정 적용:
sudo firewall-cmd --reload
설정 확인:
sudo firewall-cmd --list-all
80/tcp가 포함되어 있어야 합니다.80번 포트를 허용:
sudo ufw allow 80/tcp
방화벽 상태 확인:
sudo ufw status
80/tcp가 허용 목록에 있어야 합니다.규칙 추가:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
규칙 저장:
sudo apt install iptables-persistent
sudo netfilter-persistent savesudo service iptables save규칙 확인:
sudo iptables -L -n
웹 서버가 80번 포트를 수신하고 있는지 확인해야 합니다.
Nginx 설정 확인:
/etc/nginx/sites-available/default 파일에서 listen 80;이 설정되어 있는지 확인.sudo nginx -t
sudo systemctl reload nginxApache 설정 확인:
/etc/httpd/conf/httpd.conf 또는 /etc/apache2/ports.conf에서 Listen 80이 설정되어 있는지 확인.sudo systemctl restart apache2192.168.0.1)에 접속.80192.168.0.10)80TCP800.0.0.0/0 (모든 IP 허용) 또는 특정 IP 대역.포트 스캔 도구 사용:
CLI로 확인:
curl http://<공인_IP>
telnet 확인:
telnet <공인_IP> 80
위 단계를 모두 수행한 후에도 외부에서 접근이 되지 않으면 서버 로그(Nginx, Apache 등)나 네트워크 구성의 추가 문제가 있는지 확인해야 합니다.
리눅스 서버에서 포트 포워딩 자체는 서버에서 직접적으로 설정하지 않고, NAT 뒤에 있는 경우 라우터에서 설정해야 합니다. 하지만 라우터에 접근하여 설정하는 명령어는 없고, 웹 인터페이스를 통해 설정합니다. 아래는 포트 포워딩을 설정하는 방법의 설명입니다.
라우터 웹 관리 페이지에 접속:
http://192.168.0.1 (또는 라우터의 기본 게이트웨이 IP)로 접속합니다.포트 포워딩 섹션으로 이동:
설정 입력:
80192.168.0.10)80저장:
라우터에서 내부 IP를 설정할 때 서버의 로컬 IP를 알아야 합니다. 다음 명령어로 서버의 로컬 IP를 확인할 수 있습니다:
ip addr show
또는:
ifconfig
라우터 설정이 올바르게 되었는지 확인하려면 외부 네트워크에서 다음 명령어로 테스트할 수 있습니다.
curl http://<서버의 로컬 IP>:80
curl http://<외부 IP>:80
Tip: 만약 설정 후에도 외부에서 접속되지 않는다면, 서버 방화벽 설정을 확인해야 합니다.
만약 서버에서 방화벽이 작동 중이라면, 포트 80을 열어야 합니다:
sudo ufw allow 80
sudo ufw reload
위 단계를 따라 설정을 마무리하면 NAT 뒤의 서버에 외부에서 접근할 수 있습니다.
라우터의 관리 페이지에 접속하여 포트 포워딩을 설정하는 방법은 다음과 같습니다.
1. 라우터의 IP 주소 확인
라우터의 관리 페이지에 접속하려면 라우터의 IP 주소를 알아야 합니다. 일반적으로 이 주소는 192.168.1.1 또는 192.168.0.1입니다. 정확한 IP 주소를 확인하려면 다음 단계를 따르세요.
Windows에서:
시작 메뉴에서 cmd를 입력하여 명령 프롬프트를 엽니다.ipconfig를 입력하고 Enter 키를 누릅니다.기본 게이트웨이 항목의 IP 주소가 라우터의 IP 주소입니다.macOS에서:
시스템 환경설정에서 네트워크를 선택합니다.고급 버튼을 클릭합니다.TCP/IP 탭에서 라우터 항목의 IP 주소를 확인합니다.2. 라우터의 관리 페이지에 접속
웹 브라우저를 열고 주소 표시줄에 라우터의 IP 주소를 입력한 후 Enter 키를 누릅니다. 예를 들어, IP 주소가 192.168.1.1이라면 http://192.168.1.1을 입력합니다.
3. 라우터에 로그인
로그인 화면이 나타나면 사용자 이름과 비밀번호를 입력합니다. 기본 로그인 정보는 라우터의 제조사나 모델에 따라 다르며, 일반적으로 라우터 뒷면에 부착된 스티커에 기재되어 있습니다. 만약 로그인 정보를 변경한 적이 있다면 해당 정보를 입력해야 합니다.
4. 포트 포워딩 설정 메뉴 찾기
로그인 후, 라우터의 설정 메뉴에서 포트 포워딩, 가상 서버, NAT 설정 등의 항목을 찾습니다. 메뉴의 위치와 명칭은 라우터 제조사와 모델에 따라 다를 수 있습니다. 예를 들어, ASUS 라우터의 경우 고급 설정 > WAN > 가상 서버/포트 포워딩 메뉴에서 설정할 수 있습니다.
5. 포트 포워딩 규칙 추가
포트 포워딩 설정 페이지에서 새로운 규칙을 추가합니다. 일반적으로 다음 정보를 입력해야 합니다.
예를 들어, Nginx 웹 서버에 대한 포트 포워딩을 설정하려면 다음과 같이 입력합니다.
6. 설정 저장 및 라우터 재부팅
모든 정보를 입력한 후 설정을 저장합니다. 일부 라우터는 설정 적용을 위해 재부팅이 필요할 수 있으므로, 안내에 따라 라우터를 재부팅합니다.
7. 설정 확인
외부 네트워크에서 웹 브라우저를 열고 http://<외부 IP 주소>를 입력하여 Nginx 웹 서버에 접근할 수 있는지 확인합니다. 만약 접속이 되지 않는다면, 방화벽 설정이나 라우터의 추가 설정을 확인해야 합니다.
주의사항
공인 IP 주소 확인: 인터넷 서비스 제공업체(ISP)로부터 할당받은 공인 IP 주소를 확인해야 합니다. 일부 ISP는 공인 IP 주소를 제공하지 않거나, 공유기에서 직접 공인 IP를 할당받지 못하는 경우가 있으므로, 이 경우 포트 포워딩이 제대로 작동하지 않을 수 있습니다.
방화벽 설정 확인: 서버와 라우터의 방화벽 설정에서 포트 80이 허용되어 있는지 확인해야 합니다.
동적 IP 주소: 공인 IP 주소가 동적으로 변경되는 경우, DDNS(Dynamic DNS) 서비스를 활용하여 도메인 이름으로 접근할 수 있도록 설정할 수 있습니다.
위 단계를 따라 라우터에서 포트 포워딩을 설정하면, 외부에서 내부 네트워크의 Nginx 웹 서버에 접근할 수 있습니다.
우분투에서 라우터의 관리 페이지에 접속하려면 다음 단계를 따르세요.
1. 라우터의 IP 주소 확인
라우터의 IP 주소는 일반적으로 192.168.1.1 또는 192.168.0.1입니다. 정확한 IP 주소를 확인하려면 터미널에서 다음 명령어를 입력하세요.
ip route | grep default
출력 결과에서 default via 다음에 나오는 IP 주소가 라우터의 IP 주소입니다.
2. 웹 브라우저를 통해 라우터 관리 페이지 접속
웹 브라우저를 열고 주소 표시줄에 위에서 확인한 라우터의 IP 주소를 입력한 후 Enter 키를 누릅니다. 예를 들어, 라우터의 IP 주소가 192.168.1.1이라면 http://192.168.1.1을 입력합니다.
3. 라우터 로그인
로그인 화면이 나타나면 사용자 이름과 비밀번호를 입력합니다. 기본 로그인 정보는 라우터의 제조사나 모델에 따라 다르며, 일반적으로 라우터 뒷면에 부착된 스티커에 기재되어 있습니다. 만약 로그인 정보를 변경한 적이 있다면 해당 정보를 입력해야 합니다.
주의사항
보안: 라우터의 기본 로그인 정보는 보안에 취약할 수 있으므로, 로그인 후 비밀번호를 변경하는 것이 좋습니다.
설정 변경 시 주의: 라우터 설정을 변경할 때는 네트워크 연결에 영향을 줄 수 있으므로 주의가 필요합니다.
위 단계를 따라 우분투에서 라우터의 관리 페이지에 접속하여 설정을 확인하거나 변경할 수 있습니다.
우분투에서 라우터의 관리 페이지에 접속하려면 다음 단계를 따르세요.
1. 라우터의 IP 주소 확인
라우터의 IP 주소는 일반적으로 192.168.1.1 또는 192.168.0.1입니다. 정확한 IP 주소를 확인하려면 터미널에서 다음 명령어를 입력하세요.
ip route | grep default
출력 결과에서 default via 다음에 나오는 IP 주소가 라우터의 IP 주소입니다.
2. 웹 브라우저를 통해 라우터 관리 페이지 접속
웹 브라우저를 열고 주소 표시줄에 위에서 확인한 라우터의 IP 주소를 입력한 후 Enter 키를 누릅니다. 예를 들어, 라우터의 IP 주소가 192.168.1.1이라면 http://192.168.1.1을 입력합니다.
3. 라우터 로그인
로그인 화면이 나타나면 사용자 이름과 비밀번호를 입력합니다. 기본 로그인 정보는 라우터의 제조사나 모델에 따라 다르며, 일반적으로 라우터 뒷면에 부착된 스티커에 기재되어 있습니다. 만약 로그인 정보를 변경한 적이 있다면 해당 정보를 입력해야 합니다.
주의사항
보안: 라우터의 기본 로그인 정보는 보안에 취약할 수 있으므로, 로그인 후 비밀번호를 변경하는 것이 좋습니다.
설정 변경 시 주의: 라우터 설정을 변경할 때는 네트워크 연결에 영향을 줄 수 있으므로 주의가 필요합니다.
위 단계를 따라 우분투에서 라우터의 관리 페이지에 접속하여 설정을 확인하거나 변경할 수 있습니다.
ASUS 라우터에서 포트 포워딩을 통해 외부의 80번 포트를 내부 서버와 매핑하려면 다음 단계를 따르세요.
1. 라우터 관리 페이지 접속
http://192.168.1.1 또는 http://router.asus.com을 입력하여 라우터의 관리 페이지에 접속합니다.2. 포트 포워딩 설정
3. 포트 포워딩 규칙 설정
Web Server80을 입력합니다.192.168.1.10080을 입력합니다.TCP를 선택합니다.모든 정보를 입력한 후 확인을 클릭하여 설정을 저장합니다.
4. 설정 적용 및 확인
주의사항
위 단계를 따르면 ASUS 라우터에서 외부의 80번 포트를 내부의 웹 서버와 매핑하여 외부에서 접근할 수 있도록 설정할 수 있습니다.
리눅스에서 공개 IP(공인 IP)를 확인할 수 있는 명령어는 다음과 같습니다:
curl 명령어공인 IP를 확인하기 위해 외부 서비스를 호출합니다:
curl ifconfig.me
또는 다른 서비스:
curl icanhazip.com
curl api64.ipify.org
curl ipinfo.io/ip
wget 명령어wget으로 외부 서비스를 호출하여 공인 IP를 확인합니다:
wget -qO- ifconfig.me
dig 명령어DNS 쿼리를 사용하여 공인 IP를 확인합니다:
dig +short myip.opendns.com @resolver1.opendns.com
host 명령어DNS 서버를 통해 공인 IP를 확인합니다:
host myip.opendns.com resolver1.opendns.com
ip addr 확인만약 내부 네트워크 정보만 확인하고 싶다면:
ip addr show
공인 IP는 나오지 않지만, 네트워크 인터페이스와 내부 IP를 확인할 수 있습니다.
123.45.67.89
이 IP가 공인 IP입니다. 외부 네트워크에서 서버에 접속할 때 이 IP를 사용합니다. 😊