도메인을 가비아에서 구입하던 고대디에서 구입하던 aws의 cloudfront정도는 연동하고싶어서
aws의 route53을 이용하기로함..
물론 이전에 도메인을 route53으로 끌어오는 작업이 선진행되어있어야함.
powered by chatGPT
AWS Route 53에서 서브도메인 A 레코드 설정
Create Record
버튼을 클릭하여 새로운 A 레코드를 생성합니다.test
(서브도메인 부분)A
123.456.789.0
)Create records
버튼을 클릭하여 레코드를 생성합니다.포트 포워딩 설정
Nginx 설정
Nginx 설정 파일을 편집하여 서브도메인에 대한 요청을 처리하도록 합니다. /etc/nginx/sites-available/test.domainname.com
파일을 생성하거나 편집합니다.
server {
listen 80;
server_name test.domainname.com;
location / {
proxy_pass http://localhost:3000; # 로컬 웹 서버로 프록시
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
설정 파일을 저장한 후, 심볼릭 링크를 생성하여 활성화합니다.
sudo ln -s /etc/nginx/sites-available/test.domainname.com /etc/nginx/sites-enabled/
Nginx 설정 테스트 및 재시작
Nginx 설정 파일에 문제가 없는지 테스트하고, Nginx를 재시작합니다.
sudo nginx -t
sudo systemctl restart nginx
SSL 인증서 설정 (선택사항)
Let’s Encrypt를 사용하여 SSL 인증서를 설정합니다. certbot
을 사용하여 SSL 인증서를 발급받고 Nginx 설정을 자동으로 업데이트합니다.
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx
sudo certbot --nginx -d test.domainname.com
test.domainname.com
)을 고정 IP 주소로 설정합니다.나같은경우 미리 docker container로 올라가있는 컨테이너 안에서 패키지 설치 후 진행했다.
powered by chatGPT
네, Certbot을 통해 Let's Encrypt SSL 인증서를 발급받는 과정에서 중요한 것은 Nginx가 .well-known/acme-challenge
경로로 접근할 수 있도록 설정하는 것입니다. Next.js 앱이 Docker 컨테이너로 실행되고 있더라도, Nginx가 해당 경로를 처리하도록 설정되어 있으면 인증서를 정상적으로 발급받을 수 있습니다.
.well-known/acme-challenge
경로를 처리하도록 설정합니다.Nginx 설정 파일을 다음과 같이 수정하여 .well-known/acme-challenge
경로를 처리하도록 합니다.
upstream biz_app {
server biz-app:3000;
}
server {
listen 80;
server_name test.domainname.com;
location / {
proxy_pass http://biz_app;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /.well-known/acme-challenge/ {
root /usr/share/nginx/html;
default_type "text/plain";
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
설정 파일을 저장한 후, Nginx를 재시작하여 변경 사항을 적용합니다.
nginx -s reload
Nginx 설정 파일이 올바르게 업데이트되었는지 확인한 후, Certbot 명령어를 실행하여 SSL 인증서를 발급받습니다.
certbot certonly --webroot -w /usr/share/nginx/html -d test.domainname.com --email test@domainname.com --agree-tos --no-eff-email
인증서가 발급되면 Nginx 설정 파일을 업데이트하여 HTTPS를 지원하도록 설정합니다.
upstream biz_app {
server biz-app:3000;
}
server {
listen 80;
server_name test.domainname.com;
# 기존 http관련 포워딩내용은 주석
#location / {
# proxy_pass http://biz_app;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto $scheme;
#}
# 모든 HTTP 요청을 HTTPS로 리다이렉트
location / {
return 301 https://$host$request_uri;
}
location /.well-known/acme-challenge/ {
root /usr/share/nginx/html;
default_type "text/plain";
}
}
server {
listen 443 ssl;
server_name test.domainname.com;
ssl_certificate /etc/letsencrypt/live/test.domainname.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test.domainname.com/privkey.pem;
location / {
proxy_pass http://biz_app;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
설정 파일을 저장한 후, Nginx를 재시작하여 변경 사항을 적용합니다.
nginx -s reload
.well-known/acme-challenge
경로를 처리하도록 설정합니다.이 과정을 따르면 Docker로 실행 중인 Next.js 앱을 사용하면서도 Nginx를 통해 SSL 인증서를 발급받고 HTTPS를 적용할 수 있습니다. 추가적인 질문이 있으면 언제든지 문의해 주세요.
위 내용들을 적당히 참고하면 로컬서버로 도메인도 연결하고 ssl설정도 가능하다.