postgREST가 HTTPS를 지원하지 않고, 리버스 프록시를 이용하라고 하고 있으므로, 그대로 따라해 보았다.
NGINX를 설치하는 과정에서 생성되는 /etc/nginx/nginx.conf 파일을 보면 다음과 같은 내용이 있다. 즉, conf.d 폴더 내부의 설정 파일을 반영한다는 것이다.
{...
include /etc/nginx/conf.d/*.conf;
}
HTTPS를 이용하려면 인증서, 인증키가 필요하다. 테스트 목적이기 때문에 openssl 명령어를 이용해서 만들어 주었다. 나중에 클라이언트에서 접속하기 위해서 공개키를 만들어야 한다. 인터넷에 있는 수 많은 방법 중에서 다음의 방법이 가장 쉬웠다.
$ openssl req -new -newkey rsa:2048 -nodes -keyout test.key -out test.csr
$ openssl x509 -req -days 365 -in test.csr -signkey test.key -out test.crt
$ openssl rsa -in test.key -out public.key -pubout
초보자라서 conf.d 폴더에 있는 default.conf 파일을 수정하는 방법을 이용하였다. 다음과 관련된 내용을 추가해 준다.
- HTTP로 접속되면 HTTPS로 변환하도록 하는 부분
- HTTPS 설정과 관련된 부분
- postgREST 포트인 3000으로 연결해 주는 부분
server {
listen 443;
server_name SERVERNAME;
ssl on;
ssl_certificate test.crt;
ssl_certificate_key test.key;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
server {
listen 80;
server_name SERVERNAME;
return 301 https://SERVERNAME;
}
이렇게 하면 requests.post에서 https로 자료를 전송할 수 있다. 원래는 생성된 공개키로 문제없이 되어야 하는데, 뭐가 문제인지 connection과 관련된 오류 메세지가 발생한다. 일다 verifty=False로 해당 부분은 넘어가는 걸로 해결하고 있다.