sronsemiro.tistory.com/9

 

Ubuntu 18.04.4 LTS, Nginx에 Let's Encrypt 설치 및 HTTPS적용(SSL)

1. Certbot 설치 // add repo $ sudo add-apt-repository ppa:certbot/certbot // install certbot $ sudo apt install python-certbot-nginx 2. HTTPS(SSL)을 설정할, nginx 설정 체크 // check server_name $ su..

sronsemiro.tistory.com

기존 시스템을 유지하고 있었으므로,

Ubuntu 18.04.4 / nginx 로 운영중이다.

 

예전에 작성해두었던, 위 글을 참조해서 오랜만에 SSL을 적용하려고 아래 명령어를 입력했다.

certbot --nginx -d AAA.co.kr -d www.AAA.co.kr

 

그랬더니, 생각보다 오랜 시간이 걸린 후, 아래와 같은 에러 메시지가 나왔다.

Failed authorization procedure. AAA.co.kr (http-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://AAA.co.kr/.well-known/acme-challenge/96Ot7ZF9cVMwcycFhodd96TXi97sFQ9OR7Ln2sPpwN4 [183.111.125.112]: "\n<!DOCTYPE html>\n<html class=\"html\" lang=\"ko-KR\" itemscope itemtype=\"http://schema.org/WebPage\">\n<head>\n\t<meta charset=\"UTF-8\">\n", www.AAA.co.kr (http-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://AAA.co.kr/.well-known/acme-challenge/YTz6-bfcu9UWltNrFoqkYxrURdasHSTSePse7oH6zyI [183.111.125.112]: "<html>\r\n<head><title>504 Gateway Time-out</title></head>\r\n<body>\r\n<center><h1>504 Gateway Time-out</h1></center>\r\n<hr><center>ng"

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: AAA.co.kr
   Type:   unauthorized
   Detail: Invalid response from
   http://AAA.co.kr/.well-known/acme-challenge/96Ot7ZF9cVMwcycFhodd96TXi97sFQ9OR7Ln2sPpwN4
   [183.111.125.112]: "\n<!DOCTYPE html>\n<html class=\"html\"
   lang=\"ko-KR\" itemscope
   itemtype=\"http://schema.org/WebPage\">\n<head>\n\t<meta
   charset=\"UTF-8\">\n"

   Domain: www.AAA.co.kr
   Type:   unauthorized
   Detail: Invalid response from
   http://AAA.co.kr/.well-known/acme-challenge/YTz6-bfcu9UWltNrFoqkYxrURdasHSTSePse7oH6zyI
   [183.111.125.112]: "<html>\r\n<head><title>504 Gateway
   Time-out</title></head>\r\n<body>\r\n<center><h1>504 Gateway
   Time-out</h1></center>\r\n<hr><center>ng"

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address.

이전이랑 똑같이 했는데,.. 왜 안되지..?

 

이것저것 찾아보니, 발생할 수 있는 이유는 여러가지가 있었다.

1. 해당 주소가 https로 리다이렉트 되고 있는 경우.

2. 해당 URL의 .well-known/acme-challenge/ <=== 이 경로로 접근이 안되는경우

3. 위 에러코드에도 나오듯이 제대로 된 IP주소가 아니거나 DNS 설정이 잘못된 경우 

등등..

 

근데 나는 아무것도 해당되지 않았다.

그래서 어떻게 해야 할까 고민하다가.

 

인증서만 발급받고 나머지 설정은 수동으로 하는 방법을 찾았고, 시도해봤다.

 

letsencrypt certonly --webroot --webroot-path=/var/www/AAA -d AAA.co.kr -d www.AAA.co.kr

certbot은 인증서를 발급받고, 설정까지 자동으로 해주는 반면

letsencrypt 명령어를 사용하면, 수동으로 설정해줄 수 있다. 

(이게 맞나? 정확히는 모르겠다..)

 

--webroot --webroot-path

여기서 --webroot는 인증서를 발급받을 홈페이지 소스가 있는 폴더의 경로를 적어주면 된다.

 

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for AAA.co.kr
http-01 challenge for www.AAA.co.kr
Using the webroot path /var/www/1800_7058_co_kr for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/AAA.co.kr/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/AAA.co.kr/privkey.pem
   Your cert will expire on 2020-12-18. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 

명령어를 실행하면, 위와 같이 잘 되었다고 나온다.

그러면, /etc/letsencrypt/archive/AAA.co.kr 경로아래에 인증서들이 발급된 것을 확인할 수 있다.

 

그럼 이제, 이 인증서들을 이용해서, nginx에 설정해주면 된다.

server {
 ## 이 부분은 http로 접속하면, https로 리다이렉트 시켜주는 부분이다 ##
 listen 80;
 root /var/www/AAA;
 server_name AAA.co.kr www.AAA.co.kr;

 return       301 https://$server_name$request_uri;
}

server {
 listen 443 ssl http2;
 root /var/www/sbcompany_co_kr;
 server_name AAA.co.kr www.AAA.co.kr;
 index index.php;

 ## 아래 4줄이 아까 발급받은 인증서를 설정 하는 부분이다. ##
 ssl_certificate /etc/letsencrypt/live/AAA.co.kr/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/AAA.co.kr/privkey.pem;
 include /etc/letsencrypt/options-ssl-nginx.conf;
 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

 modsecurity on;
 modsecurity_rules_file /etc/nginx/modsec/modsec_includes.conf;
 #modsecurity_rules_file /etc/nginx/modsec/modsecurity.conf;

 location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
     access_log        off;
     log_not_found     off;
     expires           360d;
 }

 access_log /var/log/nginx/sbcompany_co_kr/access.log;

 location / {
 try_files $uri $uri/ /index.php?q=uri&$args;
 }

 location ~ \.php$ {
 include snippets/fastcgi-php.conf;
 fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
 }

 location ~ /xmlrpc.php {
  deny all;
  return 444;
 }
}

nginx에 해당 사이트의 site설정에 위 4줄을 추가해주면 된다.

끝~~

 

오랜만에 올리는 셀프 인테리어 4탄

우리는 벽면은 옅은 회색

천정은 흰색으로 칠하기로 결정했다.

 

일단 페인트를 칠하기전, 젯소를 먼저 칠해야 하는데, 

젯소를 칠한 건 미처 찍지 못했다.

 

젯소는 일반 메가코트를 이용했다. 

그런데, 순앤수 젯소도 나쁘지 않을 것 같다.

 

 

순앤수 젯소 4L, 백색

 

왜냐하면, 페인트는 순앤수 페인트를 이용했기 때문이다.

 

 

노루페인트 순앤수100 내부용 수성페인트 18L 무광, 화이트1

 

페인트 색을 고를 수 있는데, "회색1"을 골랐다.

색이 이쁘게 잘 나온다.

 

그리고, 젯소를 먼저 칠해고 나서

페인트를 칠해서 그런지 몰라도,

콘크리트 위에 칠한 것과,

벽지위에 칠한 색이 동일하게 잘 나왔다.

 

좋아, 이제 다 칠하면 되겠다.

천장을 흰색으로 칠하고,

천장과 벽을 잇는 몰딩을

흰색으로 칠할 계획이다.

 

깔끔하게 잘 해봐야겠다.

아라가 찾은 중국집 맛집❤️

수타면으로 유명한 중국집이고,

오래되었다고 했다.

 

입구쪽은 아쉽게도 미처 찍지못했다.

 

내부는 입구와는 다르게 넓었다.

그래서 그런지 거리두기도 잘 지켜진것 같았다.

들어갈 때, 입구에서 이름 쓰고 들어가는것도 잊지말자.

 

물은 셀프다~~ 

잊지말자.

기본 찬은 이렇게 주신다.

단무지, 양념 단무지 (?)

간장, 겨자소스, 춘장.

 

저 겨자소스는 나중에 정말 필요하다.

 

메뉴판을 따로 주시기도 하지만,

벽에 이렇게 깔끔하게 붙어있다.

자대고 붙이셨나? 

엄청 반듯반듯 하다.

 

우리는 짜장면, 낙지짬뽕, 찹살탕수육을 주문했다.

 

찹쌀탕수육이 먼저 나왔다.

원래는 자리에서 잘라주신다고 들었는데,

이번에는 다른 빈테이블에서 잘라서

가져다 주셨다.

아마 코로나 때문에 접촉을 최소화

하려고 하시는 것 같았다.

 

탕수육이 쫄깃쫄깃 달콤달콤 맛있었다.

양이 작아보이지만, 생각보다 많다.

 

오늘의 하이라이트 메뉴!

낙지짬뽕! 낙지가 한마리 통채로 들어있다.

후후.. 

 

낙지를 숭덩숭덩 가위로 잘라서

큼직한 다리를 겨자소스에 찍어먹으면

으음~ 그 맛이 최고다..!

 

그 다음 이렇게

국물하고 면을 잘 비벼주자.

면도 수타면이라 쫄깃쫄깃 맛있다.

 

국물도 얼큰한게 딱이다 딱.

조금더 추워지면, 따끈따근하니

몸도 따듯해질 것 같다.

 

내가 시킨 짜장면

윤기라 좌르르르~ 흐른다.

양파도 진짜 큼직큼직하게 들어가서

양파 씹는맛도 참 좋다.

 

나는 이렇게 고추가루를 뿌려서

비벼먹는걸 좋아한다.

약간 사천짜장 스타일로?

그리고, 이렇게 쉭쉭

잘 비벼 먹으면 된다.

맛있다. 동대문역 근처에서

중국집 가게 되면, 

이쪽으로 또 가게 될 것 같다.

역시 우리의 마지막은

깨끗한 접시들 ~~

 

후후~

감사히 맛있게 잘 먹었습니다!

 

[국민 리브메이트]

정답 : 노모포비아

 

[캐시워크 퀴즈]

픽스 프라임 정답: 다이나믹

하림이닭 정답 : 하림닭가슴살

 

[옥션 매일플러스 퀴즈]

정답 : 무료배송

 

[신한페이판 오늘의 OX 퀴즈]

정답 : O

 

[신한페이판 매일매일 신박한 퀴즈]

정답 : 12

 

[신한쏠 야구상식 쏠퀴즈]

정답 : 290세이브

 

[마이홈플러스 홈플 퀴즈]

정답 : 커넥티드

포스팅을 다녀오면 바로바로 해야 하는데,

사진만 찍어두고 한참있다가

나중에 기억이 나면 하게 된다.

 

꼬박꼬박 하는, 습관을 들여야지

 

 

아라가 청량리로 왔다❤️

어디로 갈까 생각하다가,

원래는 용두쭈꾸미 집으로 가려고 했는데,

 

갑자기 성천막국수!

아 물론 청량리에서는 걸어서 30~40분정도 걸리지만

힘차게 걸어가 봤다!

물론 도착했을 즈음에는 땀이.. 뚝뚝..

해가 져서 어둑어둑 해졌을때 도착했다.

 

카운터에서 대기 번호표를 받으라는 말도 있는거 보니

평소에는 사람이 엄청 많은 곳 같다.

맛집 포스라는것인가..

 

메뉴판은 요렇게 있는데,

여기는 물 / 비빔 막국수

그리고, 제육이 있다.

 

이때는 2.5단계가 시행되기 전이었고,

저녁시간도 어느정도 지났는데도 불구하고

사람이 많았다.

 

그리고, 먹는 중에도 

한두팀씩 계속계속 들어왔다.

 

 

시키기 전에 어떤식으로 음식이 나오는지

대략적이나마 확인할 수 있게,

이렇게 사진으로 볼 수 있게 해놨다.

 

우리는 물 막국수 정식,

비빔 막국수 정식 (곱배기)를 주문했다.

 

처음에는 요 짠지?랑 물을 주시는데

맛이 오묘~ 하다. 

아 뭐라고 표현을 못하겠는데,

짜긴 짠데 별로 안짜고 적당히 짜다.

그렇다고 한번에 많이 먹긴 좀 그런 맛..?

그리고, 위의 흰색 짠지에

양념장을 좀 비비면 이렇게 되는데

요것도 맛이 오묘오묘 하다.

진짜 먹어보면 안다.

뭐라고 표현해야 할지 모르겠다. 하하.

 

요게 제육이다. 제육이 먼저 나온다.

우리는 정식을 2개 시켰으니까,

45g씩 2개, 총 90g이 나온건데,

뭔가 양이 작다.

근데 90g 이니까 이해는 간다. 

고기 90g이 뭐.. 얼마나 되겠어..

 

그런데, 이게 왜 제육인지는 모르겠다.

뭔가 보쌈 고기같은 느낌인데..?

 

요렇게 양념한 짠지와 

제육을 같이 먹으면 맛있다.

아니 좀 오묘하다?

 

드디어, 비빔막국수랑 물막국수가 나왔다.

비빔은 곱배기라서 양이 좀 많다.

 

비빔은 참기름 향인지

고소한 향이 가득한게 진짜 맛있다. 

 

곱배기로 안시켰으면 후회할 뻔 했을정도로,

맛있게 먹었다.

 

물막국수는 뭔가 좀 비린? 맛이 나는데

나한테는 좀 안맞았다.

그런데, 아라는 맛있다고 

다음에 와도 물막국수를 먹을것 같다고 했다.

 

아아 비빔..

맛있다 진짜.

또 먹으러 가야겠다..

 

아주 깔끔하게 

그릇을 싹 비웠다.

진짜 배가 너무 불러서,

둘다 배가 볼록 튀어나올정도로

 

다음에 또 가자~~

 

아참, 여기 오후3시~오후5시는

브레이크 타임이라고 하니 참고하자.

그리고, 가게 앞에 주차를 하면,

동네주민들에게 피해가 간다고, 

따로 주차장을 안내하고 있으니,

 

차를 가져오게되면 주차장에

차를 주차하는게 좋겠다.

 

우리는 걸어가서 상관없었지만~

 

회기역에서 무얼 먹을까 고민하다가,

원래는 용 떡볶이? 집을 가려고,

시작시간에 맞춰 갔는데, 

아직 준비중이라고 되어 있어서,

가질 못했다.

 

그래서 어디를 갈까 고민하다가

인생설렁탕 가게가 눈에 띄어서

가보기로 했다.

 

내부는 역시 깔끔했다.

그리고, 밖은 굉장히 후덥지근 했지만

안은 굉장히 시원했다.

 

 

원산지 표시가 이렇게 걸려 있었다.

설렁탕 집이라 그런지,

김치가 국내산이라는게 신기했다.

 

요게 메뉴판인데,

특이하게 소면추가가 있었다.

(500원 추가)

 

나는 인생설렁탕에 소면추가

아라는 스지 설렁탕을 주문했다.

그리고, 만두도 주문했다.

 

요렇게 기본 셋팅이 되고,

밥 한공기씩, 김치 / 깍두기 그리고

스지설렁탕에는 간장을 하나 가져다 주신다.

 

요게 내가 주문한,

인생설렁탕 + 소면추가.

소면을 추가해서 그런지 

그래도 양이 좀 있어보인다.

 

이게 아라가 주문한 스지설렁탕

뭔가 처음 기대했던 것과는 다르게 

조금 횡~ 해보인다.

소면 추가를 안해서 그런가..

 

스지라는게 그 물렁뼈? 라고 해야 하나?

약간 투명 색에 고기를 뜻하는 건지는

요번에 처음 알았다.

아무튼 스지도, 막 그렇게 많이 들어있다는

느낌은 받지 못했다.

 

나는 후추를 이렇게 뿌려서 먹었다.

그대로 나는 맛있게 후루룩 국물까지

싹싹 깨끗하게 먹었다.

 

만두는 이렇게 세개가 나온다.

 

아무튼 전체적으로는 배부르게 먹었고,

특히 김치가 참 맛있었다.

 

하지만, 처음 나온 비주얼이 뭔가 좀 없어 보였다.

같은 양이라면 차라리

그릇 크기를 줄여서 조금 더

푸짐해 보이게 만드는게 좋지 않을까?

생각해봤다.

서버환경

Ubuntu 18.04.4 LTS

Nginx 1.19.1

 

기존 운영 도메인

1. AAA.com

2. BBB.Com (SSL 적용완료)

3. a.CCC.com

4 b.CCC.com (SSL 적용완료)

..등등 약 30개 정도 사이트

 

위 환경의 서버에서, Letsencrypt를 이용해서, 추가로 x.CCC.com 사이트에 SSL를 설정하고 있었다.

그런데, 자꾸 인증과정에서 에러가 발생했고,

추가적으로, https://asdf.CCC.com 과 같이 현재 서버에는 설정되어 있지 않은, 주소로 접속을 시도하면, 

기존에 SSL이 설정되어 있던, https://BBB.com 으로 접속이 되는 현상이 있었다.

 

이게, 기존부터 이렇게 되었던 건지,

아니면, 어떤 이유로 발생 했는지는 모르겠다.

 

여기저기 찾아보다가, 

qastack.kr/server/578648/properly-setting-up-a-default-nginx-server-for-https

 

위의 링크를 찾게 되었고, 해결했다.

 

이유는 바로, default 파일이 없어서 발생했던거다.

또한, default 파일도, http로 접속했을때와, https로 접속했을때 둘다를 설정해주어야 한다.

 

나는 그래서 아래와 같이 설정했다.

server {
  listen 80 default_server;
  listen [::]:80 default_server;
  listen 443 default_server;
  listen [::]:443 default_server;

  root /var/www/html;
  index index.html;

  server_name _;

  ssl_certificate /etc/nginx/ssl/nginx.crt;
  ssl_certificate_key /etc/nginx/ssl/nginx.key;

  location / {
    try_files $uri $uri/ =404;
    }
}

 

이렇게 설정후, nginx를 재시작 또는 reload를 하면,

위의 설명했던 현상이 발생하지 않게 된다.

 

또, default를 설정하지 않았을 때,

없는 주소로, https 를 이용해서 접속하게 되면,

https://BBB.com이 접속되는데, 

아마 그 이유는 sites-available 안에 파일 중,

SSL이 설정된 가장 첫번째 파일의 주소로 접속되는 것 같다. (알파벳 순)

 

이상하게, 서버가 느려지는 것 같은 느낌이 들어서,

nginx 서버 튜닝을 알아보다 보니, log에 관련된 이야기가 나왔다.

그래서, 어떻게 되어있나 살펴보니.. 헉..

80만 라인이 넘어가고 있었다..

 

아아..

 

어떻게 해야 하나 찾아보다가

logrotate를 알게 되었다.

 

일단 logrotate를 설치하자.

sudo apt-get install logrotate

 

그리고, /etc/logrotate.d/nginx 파일을 만들고

아래 코드를 추가하자.

## 보통은 이 부분만 만든다.
/var/log/nginx/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 nginx adm
        sharedscripts
        postrotate
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        endscript
}

## 나는 로그를 서브도메인별로 따로따로 저장하게 설정이 되어있어서,
## 이 부분까지 설정해 주었다.
/var/log/nginx/*/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 nginx adm
        sharedscripts
        postrotate
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        endscript
}

각각이 뜻하는 바를 알아보면,

  • daily : 하루치를 따로따로 보관하자.
  • missingok : 로그 파일이 없어도 에러를 내지말자.
  • rotate 52 : 로그 파일을 52개까지만 보관하자. 위에 daily로 설정되어 있으니, 52일치만 보관하고, 53일째 되는 로그는 삭제.
  • compress : 로그를 압축해서 보관하자.
  • notifempty: 로그파일이 비어있으면, 로테이트 하지 않습니다.
  • create 640 nginx adm : 로그파일은 새로 생성시에, 파일 권한을 640으로 생성하고, 소유자/그룹은 nginx로 하자.
  • postrotate : 로테이트 작업이 끝난후에, 실행할 스크립트를 입력합니다.

 

위 설정 후, 정상적으로 설정되었는지, 테스트하기 위해서 아래의 명령어를 실행합니다.

logrotate -d -f /etc/logrotate.d/nginx

 

정상적으로 설정되었다면, /etc/cron.daily/logrotate 파일로 인해서, 매일 자동 실행됩니다.

 

혹시, /etc/cron.daily/logrotate 파일이 없다면,

아래와 같이 만들어 주자.

 

#!/bin/sh

# Clean non existent log file entries from status file
cd /var/lib/logrotate
test -e status || touch status
head -1 status > status.clean
sed 's/"//g' status | while read logfile date
do
    [ -e "$logfile" ] && echo "\"$logfile\" $date"
done >> status.clean
mv status.clean status

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

 

 

참고 : https://www.lesstif.com/system-admin/nginx-log-rotate-logrotate-75956229.html

+ Recent posts