이것때문에 하루 종일 얼마나 삽질 한지 모르겠다.
이론적인 부분은 검색해보면 차고 넘치는 만큼
오로지 목표에 다가서는 방법만 정리하려 한다.
1. SSL 인증서 발급
일단 SSL 인증서를 공인된 기관에서 받아야 한다. (openssl 같은 것을 이용해서 직접 만들수도 있지만, 어차피 실 서비스에 사용할 수 없다)
SSL은 publicKey와 privateKey로 구성되는데 두 개의 파일이 필요하다는 것만 알고 있으면 된다.
certbot을 이용하면 무료로 let's encrypt가 인증한 ssl을 쉽게 받을 수 있다.
홈페이지 중반부에 동그라미 친 부분의 기존 HTTP 환경을 선택하면 방법이 나온다.
진짜 그대로 따라하기만 하면 된다.
2. ReverseProxy
해당 설정을 완료하고 nginx를 실행하면 기존의 서버 대신 nginx 서버가 실행 될 것이다.
이것을 기존의 프로젝트 서버로 Redirect해주어야 한다.
이때 ReverseProxy 와 같은 개념을 이용한다.
일단 nginx의 sites-available 로 이동한다.
cd /etc/nginx/sites-available |
그러면 default 파일이 있는데 안전장치로 파일을 하나 복사해놓고 다음과 같이 수정한다.
sudo vim default |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
server {
server_name domain.com; // 도메인 네임
location / {
proxy_redirect off;
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:3000/; // 현재 프로젝트의 포트
proxy_redirect off;
proxy_http_version 1.1;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; //
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = test.eilsin.co.kr) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name test.eilsin.co.kr;
return 404; # managed by Certbot
}
|
letsencrypt에서 추천하는 설정이다.
server_name에 도메인을
proxy_pass에 프로젝트가 열린 서버와 포트를 입력해준다.
ssl_certificate와 관련된 fullchain.pem과 privkey.pem은 아까 certbot이 만들어준 두개의 필요한 설정파일인데 그 때 설정한 도메인 네임이 위의 디렉토리명이 된다.
이후 nginx를 재시작한다.
service nginx restart |
나 같은 경우에는 무슨 데몬 엔진의 문젠가 뭔가로 위의 명령어가 안 먹혔다 (포트가 안닫히는 현상)
그럴땐 다음과 같이 강제로 닫았다 열어주자.
sudo fuser -k 80/tcp sudo nginx |
'교양 > 네트워크' 카테고리의 다른 글
HTTP 완벽가이드 - 4장 커넥션 관리 (0) | 2019.08.17 |
---|---|
HTTP 완벽가이드 - 3장 HTTP 메시지 (0) | 2019.08.17 |
HTTP 완벽가이드 - 2장 URL과 리소스 (0) | 2019.08.16 |
HTTP 완벽가이드 - 1장 HTTP 개관 (1) | 2019.08.16 |