nginx 설정 파일은 주로 '/etc/nginx/sites-available/' 디렉터리에 위치함
기본파일인 default파일을 삭제한 후 configuration 파일을 생성함
server {
listen 80;
server_name example.com; # 도메인 또는 IP 주소를 넣는데 여기 구글 클라우드 플랫폼 외부 IP를 넣음
location / {
proxy_pass http://localhost:3000; # Node.js 서버의 포트
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
nginx 설정 파일 configuration을 활성화 하기 위한 심볼릭 링크 생성
sudo ln -s /etc/nginx/sites-available/configuration /etc/nginx/sites-enabled/
nginx 구성파일의 유효성 검사
sudo nginx -t
nginx 재시작
sudo systemctl restart nginx
또는
$sudo service nginx restart
nginx 상태 확인
sudo service nginx status
깃허브에 올렬놓은 코드를 클론
git clone https://github.com/kimskyyyy/ojt-project.git
외부 IP 주소 확인
curl ipinfo.io/ip
포트 추가해서 다른프로젝트 올리기
Nginx 설정 파일로 만들어 놓은 configuration을 수정해야함
수정하기 위해서 텍스트 편집기를 사용해야하는데 텍스트 편집는 nano, vim, vi, emaca 등이 있음
그 중 nano를 사용해서 편집해보기
# $sudo nano /etc/nginx/sites-available/{Nginx설정파일명}
# 실제 내가 만든 설정파일인 configuration 편집 명령
$sudo nano /etc/nginx/sites-available/configuration
server {
listen 55715;
listen [::]:55715;
server_name 34.125.44.193;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
nginx 구성파일의 유효성 검사
sudo nginx -t
nginx 재시작
sudo systemctl restart nginx
트러블슈팅
구글 클라우드 플랫폼 외부 IP가 접속 안됨
Google Cloud Platform (GCP)에서 제공하는 해결 방안
위에 따라 방화벽 규칙 확인, 네트워크 연결 문제를 해보았지만 해결이 안되었고
nginx와 node.js서버 설정할 때 문제가 있었을 것이라고 생각하고 기존에 설정했던 파일을 모두 삭제 후 다시 진행
문제1.
nginx 설정 파일 작성 후 유효성 검사인 sudo nginx -t 명령을 통과하지 못하고 아래와 같은 에러 발생
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
위 명령어로 vim을 슈퍼유저로 실행해서 configuration 파일을 수정함
해결
configuration 파일이 잘못되어 있어서 난 오류였음
nginx: [emerg] unknown directive "요청이" in /etc/nginx/sites-enabled/configuration:6
nginx: configuration file /etc/nginx/nginx.conf test failed
기존 http://34.125.44.193을 http:// 이 들어가서 오류가 발생한 것을 확인하고 http://를 삭제하여 해결
server {
listen 80;
server_name 34.125.44.193; # 도메인 또는 IP 주소를 넣는데 여기 구글 클라우드 플랫폼 외부 IP를 넣는데 여기에 http:// 가 들어가 있어서 발생된 오류
location / {
proxy_pass http://localhost:3000; # Node.js 서버의 포트
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
문제2.
nginx의 설정파일을 수정하여 node.js 서버와 연결 설정해야하는데
etc/nginx/sites-available/ 디렉터리에 configuration이라는 파일 만들어서 수정했는데 "configuration" E212: Can't open file for writing" 오류 발생
해결
이 오류는 파일 편집기에서 파일을 쓰기 권한이 없는 것을 나타냄
vim을 슈퍼유저 권한으로 실행하여 configuration 파일을 수정함
문제3.
심볼릭 링크 설정 문제
ln: failed to create symbolic link '/etc/nginx/sites-enabled/configuration': File exists
해당 메시지는 해당 심볼릭 링크의 대상 경로에 이미 다른파일이나 심볼릭 링크가 존재하여 발생하는 에러로 configuration 파일을 삭제 후 심볼릭 링크를 다시 만드는 방법으로 해결
'Linux' 카테고리의 다른 글
[Ubuntu] 우분투 마리아 디비(MariaDB) 설치 (0) | 2023.11.01 |
---|---|
[Ubuntu] 기본 포트 번호 변경 (0) | 2023.11.01 |
[Linux] 리눅스 백그라운드 실행 및 관리 (0) | 2023.10.25 |