본문 바로가기
  • 포르쉐타고싶다

분류 전체보기93

[nginx] DNS는 뭐고 도메인은 뭐고, 또 호스트는 뭐야 dns, 도메인, 호스트... 헷갈린다 이 참에 이제 절대 안 헷갈리도록 정리해보려고 한다. 호스트 네임 : 컴퓨터의 이름입니다. 도메인 네임 : 컴퓨터 그룹의 이름입니다. 예를 들어... 호스트 네임은 사람의 이름으로, 도메인 네임은 사람의 성 이라고 보면 된다 [김철수]라는 이름에서는 성은 [김]이고 이름은 [철수] 이렇게 구분할 수 있다. 또 [이영희]라는 이름에서는 성은 [이], 이름은 [영희]라고 할 수 있다. 여기서 [김], [이]와 같은 성을 도메인 네임으로, 호스트 네임은 [철수], [영희]로 이해하시면 됩니다. 직접 dns에 적용해보면 example.com 이라는 도메인을 구매했다고 하면 그 도메인을 이용해 웹서버, api서버를 지정할 수 있는데 api.example.com이라는 레코드를.. 2020. 3. 30.
[nginx] https 설정시 프록시 - https 상호관계 및 정리 1. 먼저 https를 사용하는 이유 : - http만 사용하면 그 사이트에 접속할 때 그 사이트가 CA로부터 검증된 사이트인지 모른다. - 보통의 사람들은 비슷한 아이디, 비밀번호를 여러 사이트에 공유하기 때문에 악의의 B 사이트가 원래의 A 사이트와 비슷하게 만들어서 도메인을 만들고 사용자가 A사이트인줄 알고 B사이트에 계정을 입력했을 때 그 유저의 또 다른 많은 계정이 털리는 것과 같은 결과를 초래한다. - 그래서 그 사이트가 정말 유저가 원하는 검증된 사이트임을 https가 알려주는 것이다. - 사이트 도용 뿐만 아니라 그 계정을 입력한 뒤 서버로 정보를 보낼 때 그 중간에 해커가 가로챌 염려가 있다. - https에서는 클라이언트(브라우저)와 웹서버 사이에 정보교류에서 그 데이터들을 암호화하기 .. 2020. 3. 29.
[nginx] 서버에 https 설정 시 자동 Let's encrypt 인증서 갱신 및 자동 nginx 리로드(Reload) https://certbot.eff.org/lets-encrypt/ubuntuxenial-nginx Certbot - Ubuntuxenial Nginx a project of the Electronic Frontier Foundation certbot instructions To use Certbot, you'll need... comfort with the command line command line ...and an HTTP website HTTP website that is already online already online with an open port 80 port 80 ...which i certbot.eff.org 위의 certbot의 instruction을 따라하면 자동으로 let's.. 2020. 3. 28.
[nginx] nginx 설정 - server_name 프록시 설정 : server{} 원래있던 server_name _; 는 server_name 도메인이름 처럼 바꿔주게 되는데 방문자가 어떤 주소로 들어오냐에따라 해당 도메인 이름을 가진 server{...} 블록이 처리한다. 요청된 도메인을 처리하는 server_name을 가진 블록이 없다면, 디폴트 서버(default_server)로 지정된 블록이 처리합니다. 2020. 3. 28.
[nginx] 포트포워딩, 그리고 리버스 프록시(Port Forwarding, and Reverse Proxy) 1. 배경 포트포워딩은 nginx의 가장 기본적인 기능이다. 한 웹서버 안에서는 한 가지의 서버만 존재하지는 않는다. api서버와 웹 페이지 서버도 있을 수 있고, 랜딩페이지 서버도 같이 있을 수 있고.. 관리자 페이지 서버 등등 여러개의 서버가 같은 웹서버에 같이 있을 수 있다. 그리고 이 서버들은 각각 다른 포트를 갖고있다.(localhost:3000, localhost:3001, ...) 웹 서버는 어떻게 같은 도메인을 요청했을 때 이를 알아채고 적절한 서버를 선택하여 보내줄 수 있는 것일까 바로 nginx의 포트포워딩(port forwarding)기능 덕분이다. 2. 개념 Port Forwarding : 포트 인도 즉, 서버에 들어온 요청을 다시 내부의 특정 포트로 보내주는 것이다. (특정 포트 .. 2020. 3. 28.
[nginx] sites-available에 만든 파일 sites-enabled에 include시키기 ubuntu@:~/ cd /etc/nginx /etc/nginx의 경로에서 nginx에 대한 기본적인 설정을 진행할 수 있다. 그 중 프록시 관련 설정을 할 때 /etc/nginx/sites-enabled 라는 폴더에서 직접적으로 설정이 가능하고 유저는 저 폴더에 있는 설정파일을 직접적으로 수정하지 않고 /etc/nginx/sites-available 의 폴더에서 여러 설정파일들을 생성한 뒤 그 파일들 중 원하는 설정을 선택적으로 sites-enabled폴더에 동기화해서 적용하는 symlink 기능을 이용한다. 다음은 sites-available에 만든 설정파일을 sites-enabled에 symlink 시킬 수 있는 명령어이다. 먼저 sites-available에 'proxy-setting1'이라는 설.. 2020. 3. 26.
[nginx] nginx에 프록시, 로드밸런싱 설정하기 1. 프록시 설정 한 웹 서버 안에는 여러 서버가 있을 수 있다. 그 각각의 서버들도 자기의 서버가 있고 웹서버 안에 있는 이상 메인도메인(퍼블릭 ip) 안에서 프라이빗 ip를 가지고 있는 것이다. 프록시 설정을 하면 퍼블릭 ip를 거친 요청만이 프라이빗 ip로의 요청 마무리를 통해 요청을 통한 원하는 응답을 가질 수 있다. 클라이언트가 서버의 자원을 자기 맘대로 쥐락펴락 못하려면 웹서버의 퍼블릭 ip, 웹 서버 안에서의 프라이빗 ip 를 모두알면 안된다. 클라이언트는 퍼블릭 ip만 알고있는 상황에서 요청을 하고, 이 퍼블릭 ip를 거치는 과정에서 여러 보안적 이슈를 해결할 수 있다. 그 다음에 프록시의 역할, 즉 요청하는 프라이빗 ip로의 연결을 대리(proxy)하는것이 바로 프록시 서버의 역할이다. .. 2020. 3. 24.
[알고리즘] DATABASE에서 여러 테이블을 JOIN해서 가져온 데이터배열 중복 제거, 정리(1) 어느 어플이든 어느정도 진행이 나가고 나서부터는 database에서 한번을 깔끔한 데이터를 가져와 보기가 힘들다. 그 이유는 미래의 데이터의 확장성때문인데, 예를 들면, 가장 큰 예로 이미지가 있겠다. 페이스북 게시물을 보면 한 게시물에 여러개의 사진이 들어있다. 게시물의 내용과 이 사진의 데이터가 하나의 테이블에 존재하게 된다면 게시물 당 사진의 개수가 한정되어있어야하므로 유연성, 확장성이 극히 떨어지게 된다. 그래서 보통은 사진테이블과 게시물 테이블을 따로 두고 한 게시물에 대해서 게시물 테이블에서의 게시물 데이터와 사진 테이블에서 해당 게시물 사진 데이터들을 합쳐서(JOIN) 서버로 가져와야하는데 그렇게 되면 받아오는 배열의 결과는 우리가 원하는 한 게시물의 객체에 이미지배열이 프로퍼티로 들어가 있.. 2020. 3. 21.
[보안] ssl 활용 SSL이 활용되는 방법에는 크게 두가지가 있다. 1. 서버가 공인된 서버임을 인증(전자서명) - CA는 비공개키를 갖고있는데 전자인증을 신청한 서버에게 그 비공개키로 풀 수 있는 공개키를 갖고있는(공개키로 암호화된) 인증서를 서버에게 부여 전달 - (이 과정에서 서버는 그 공개키에 대한 비밀키도 갖게됨 => 클라이언트와의 소통에서 필요) - 서버는 해당 서버를 이용하려는 클라이언트에게 공개키로 암호화된 인증서를 전달 - 클라이언트(브라우저)는 해당 공개키에 해당하는 CA에게 암호화된 인증서를 전달하고 CA가 비공개키로 풀림을 보여줌으로써 이 서버가 공인된 서버임을 확인시켜줌 - 클라이언트는 여러 백신을 뚫고 깔끔하게 연결이 가능한 것. 2. 정보 보안 전달 - 인증서를 보내면서 거기에 담겨있는 공개키를 .. 2020. 3. 16.
[linux] ec2 인스턴스 사용자의 ssh 보안 접속방법 두 가지 : 키페어, 비밀번호 프로그램의 서버 본체를 ec2 인스턴스에 올려 관리하고 있던 중 프로그램 일부분을 외주에게 맡길 부분이 있었고 외주가 맡은 부분을 이 인스턴스 내부에서 새로운 사용자를 부여하여 같이 관리를 해야했기 때문에 인스턴스 접속을 공유해야하는 일이 생겼다. 내가 ec2서버를 만든 후 부터 디폴트로 사용하던 사용자 이름을 ubuntu 접속주소를 ubuntu@ec2-12-345-678-90.ap-northeast-2.compute.amazonaws.com (가주소), 인스턴스 생성 시 새로 발급받은 key-pair이름을 ubuntukey.pem 이라고 하자. 사용자이름 : ubuntu 키 파일 : ubuntukey.pem 접속주소 : ubuntu@ec2-12-345-678-90.ap-northeast-2.comput.. 2020. 3. 7.
[MySQL] ORDER BY에 여러가지 기준과 선순위/후순위가 있을 때 ORDER BY는 기본적으로 SELECT 한 결과물들을 어떻게 정렬할 것인가를 결정해준다 예를 들면 한 유저가 갖고있는 쿠폰목록을 가져오려고 할 때 더 나중에 추가된 쿠폰(최근 쿠폰)부터 차례로 정렬해서 가져오고 싶을 때 ORDER BY coupon_idx DESC // 더 나중에 추가된 쿠폰의 idx부터 내림차순으로(DESC)! 를 SELECT문에 덧붙여주면 된다. 실제 쿼리문을 보자 SELECT coupon_idx, coupon_title, coupon_detail // 가져오려는 칼럼 FROM coupon// 테이블명 : coupon WHERE user_idx = 3// user_idx 칼럼이 3인 쿠폰을 선별해라! ORDER BY coupon_idx DESC// coupon_idx가 큰 것부터 내.. 2020. 3. 3.
[MySQL] 여러 테이블 합쳐서 SELECT하기 - JOIN ~ ON ~ 데이터베이스에서 게시글 정보를 꺼낼 때 '게시글'이라는 한 테이블이 게시글에 대한 모든 정보를 갖고있지 않는다. 예를 들면 우리가 한 게시글을 보면 게시글의 제목, 내용 뿐만 아니라 게시글을 쓴 사람, 게시글의 첨부파일, 게시글에 대한 좋아요수 등 완전 직접적이진 않은(?) 정보 또한 보여주고 있다. 이 게시글의 모든 정보를 데이터베이스에서 꺼낼 때 [게시글] 테이블엔 게시글의 '제목', '내용' 을 갖고있고 [유저] 테이블에 게시글을 쓴 '사람 정보' [게시글 좋아요] 테이블에 게시글과 좋아요 한 사람의 매칭되는 정보가 들어있다. 그리고 클라이언트가 게시글 정보 조회를 요청하면 서버는 이 세 테이블의 내용을 합쳐서 응답 데이터로 보내줘야 한다. 여기서 두가지 방법이 있다 1) 데이터베이스에서 세 테이블.. 2020. 3. 1.
[javascript] 객체{}에 프로퍼티(key : value) 추가하는 방법 이전에 정의해 놓은 객체에 속성을 추가하는 일이 생긴다 예를 들면 클라이언트가 게시글을 등록할 때 게시글 제목, 게시글 내용을 묶은 게시글 객체를 서버에 요청하고 서버 내에서 클라이언트로부터 받은 게시글 객체에 해당 유저 정보를 속성(프로퍼티)으로 추가하는 경우다 코드로 보면 클라이언트가 서버에 요청한 게시글(리뷰)객체 Review가 있다고 하자 { "reviewTitle" : "어서오세요", "reviewComment" : "안녕하세요 홍지원입니다" } 서버는 따로 갖고있던 리뷰를 쓴 유저 정보를 속성으로 추가한다고 하면 목표 : { "userIdx" : 3, "userName" : "홍지순", "reviewTitle" : "어서오세요", "reviewComment" : "안녕하세요 홍지원입니다" } .. 2020. 3. 1.
[javascript] 여러 property프로퍼티((key : value)쌍)을 갖고 있는 객체를 배열화하기 여러 (key, value)들을 갖고있는 객체를 배열화할 일이 있다. 예를 들면 클라이언트가 요청한 리뷰 내용들을 데이터베이스에 저장하는 상황에서 서버는 클라이언트가 요청한 데이터를 데이터베이스 쿼리문에 인용해야 한다. 클라이언트에서 보낸 { "reviewTitle" : "어서오세요", "reviewComment" : "안녕하세요 홍지원입니다" } 라는 Review 객체를 보냈다고 가정하자 데이터베이스의 테이블명이 review라고 할때 서버는 코드상에서 쿼리문을 query = 'INSERT INTO review (review_title, review_comment) VALUES (?, ?)' 라고 작성하고 저 두개의 ?에 클라이언트가 보낸 객체의 두 프로퍼티를 그대로 갖다 쓰면 된다. 물론 저 요청 객체.. 2020. 3. 1.
여행사는 앞으로 어떻게 될까 - (하나투어, 모두투어) 16~17년 초호황 18~19년 초불황(18: 태풍, 지진, 19: 일본과의 정치적 이슈) 사모펀드(IMM PE)가 하나투어 최대주주로 사모펀드가 좋아하는 기업: 안정적인 자금흐름의 기업, 사모펀드의 목적 : 약간 아쉬운 기업을 매수해서 경영을 개선시켜서, 혹은 그 업계의 미래가 좋을 것 같을때, 그 이후로 주가가 오르면 다시 다른 곳에 매각해서 돈을 불리는 것 사모펀드가 기업을 샀다는 것 : 해당 기업이 경영을 좀만 더 잘해서 주가를 올리거나, 그 업계가 좋아질 것 같아서(더 내려가지 않을 것 같아서) 주가가 더 올리기 쉬울 것 같다는 것! 개미투자자에게도 좋은 징조일 듯! 2020. 2. 15.