Elastic Load Balancer을 사용하여 https 설정 후 

 

access로그에 계속 ELB-HealthChecker/2.0라고 떠서 다른로그를 볼수가없을때

 

 

 

ubuntu

cd /etc/nginx/sites-enabled/

nano 자신의 설정값 접속 

 

 

map $http_user_agent $ignore_ua {
default                 1;
"ELB-HealthChecker/2.0" 0;
}

server {
        client_max_body_size 0;
        listen 80;
        server_name 내아이피주소;

        location = /favicon.ico { access_log off; log_not_found off; }

        location / {
                access_log /자신경로/logs/nginx_access.log combined if=$ignore_ua;
                error_log  /자신경로/logs/nginx_error.log;

                include proxy_params;
                proxy_pass http://unix:/tmp/test.sock;
        }
}

 

 

sudo systemctl restart nginx

반응형

'python > fastapi' 카테고리의 다른 글

jwt access refresh token에 대한 정의  (0) 2022.09.07
sqlmodel create_all table생성 안될때  (0) 2022.08.31
[Errno 48] Address already in use  (0) 2022.08.29

jwt란  JSON Web Token의 약자 

 

jwt는 header,payload,signature로 나눠져있는데

 

Header는 토큰의 타입과 해시 암호화 알고리즘으로 구성되어 있습니다. 첫째는 토큰의 유형 (JWT)을 나타내고, 두 번째는 HMAC, SHA256 또는 RSA와 같은 해시 알고리즘을 나타내는 부분입니다.

 

Payload는 토큰에 담을 클레임(claim) 정보를 포함하고 있습니다. Payload 에 담는 정보의 한 ‘조각’ 을 클레임이라고 부르고, 이는 name / value 의 한 쌍으로 이뤄져있습니다. 토큰에는 여러개의 클레임 들을 넣을 수 있습니다.
클레임의 정보는 등록된 (registered) 클레임, 공개 (public) 클레임, 비공개 (private) 클레임으로 세 종류가 있습니다.


Signature는 secret key를 포함하여 암호화되어 있습니다.

 

ex)

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NjM3NDA4MzgsImlhdCI6MTY2MjUzMTA1OCwic3ViIjoiMSJ9.6SFagZKjko3Lagm-js0ugxUuI823OBQA40nsTT1jsxg

 

.을 중심으로 header,payload,signature를 의미한다

header = eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

payload = eyJleHAiOjE2NjM3NDA4MzgsImlhdCI6MTY2MjUzMTA1OCwic3ViIjoiMSJ9

signature = 6SFagZKjko3Lagm-js0ugxUuI823OBQA40nsTT1jsxg

 

https://jwt.io/

위 사이트에서 token 테스트 가능하다 

 

 

구현

access는 유효기간(30분~2시간)이 짧고

refresh는 유효기간(2주~1달)이 길다.

 

가입할때 access와 refresh를 발급하여 클라에게 전송 refresh는 db에 저장한다 

 

클라에서 api요청시 access를 header에 넣어서 확인 

 

서버에 만료된 access가 왔을때

토큰안의 id를 가진 유저정보 확인 ->문제있으면 오류

refresh token의 존재여부 확인 -> 문제있으면 오류(직접 임의로 지웠을시 재로그인 유도)

내가가진 refresh token과 같은지확인 ->문제있으면 오류

문제없을시 access 재발급 

 

access만료시 refresh token도 만료시 -> 오류 

 

로그아웃시 db에서 refresh를 지워서 access재발급을 못하도록 한다 

 

보안을 위해 2주마다 재로그인을 해야한다 

 

jwt방식 시간에 맞춰 강제로그아웃하기엔 적합하지않다 (추가작업필요)

강제로그아웃하는일이 생기는 서비스라면 session을 이용한 보안방식을 선택하라 

 

 

참고:

https://cotak.tistory.com/102

https://velog.io/@solchan/%EB%B0%B1%EC%97%85-Refresh-Token-%EB%B0%9C%EA%B8%89%EA%B3%BC-Access-Token-%EC%9E%AC%EB%B0%9C%EA%B8%89

 

반응형

'python > fastapi' 카테고리의 다른 글

nginx ELB-HealthChecker/2.0 log 없애기  (0) 2023.03.17
sqlmodel create_all table생성 안될때  (0) 2022.08.31
[Errno 48] Address already in use  (0) 2022.08.29

sqlmodel 사용시 

SQLModel.metadata.create_all(engine) 호출시 db에 테이블생성이 되야하는데 안될때 

SQLModel.metadata.create_all 코드가 있는 곳에 내가 생성하고자 하는 models class들을 import 해야한다!! ★

ex)

from models 부분이 중요하다 

from sqlmodel import SQLModel, create_engine, Session
from models import Team, Hero, HeroTeamLink

mariadb = "mysql+pymysql"
postgresql = "postgresql+psycopg2"

engine = create_engine('{db}://{username}:{password}@{host}:{port}/{db_name}'.format(
    db=postgresql,
    username='id',
    password='pw',
    host='localhost',
    port='1233',
    db_name='team'
), echo=False)  # echo= sql log

def create_db_and_tables():
    SQLModel.metadata.create_all(engine)

혹시 그래도 안된다면 

 

직접만든 model 안에 __tablename__도 입력하여 시도해보길 바란다 

 

이걸로 하루날림 

+

가끔 특정 타이블만 안만들어진다면 만들어진 클래스 똑같이 복사해서 이름바꾸면 된다. 이게무슨 ㅡㅡ

 

반응형

'python > fastapi' 카테고리의 다른 글

nginx ELB-HealthChecker/2.0 log 없애기  (0) 2023.03.17
jwt access refresh token에 대한 정의  (0) 2022.09.07
[Errno 48] Address already in use  (0) 2022.08.29

서버 실행시 이미 사용중이라고 뜬다면 

 

터미널에서 

sudo lsof -i:[원하는포트명]

 

ex)sudo lsof -i:8000

검색 후 

pid아이디 확인 후

 

kill [pid id]

ex) kill 26423

 

반응형

'python > fastapi' 카테고리의 다른 글

nginx ELB-HealthChecker/2.0 log 없애기  (0) 2023.03.17
jwt access refresh token에 대한 정의  (0) 2022.09.07
sqlmodel create_all table생성 안될때  (0) 2022.08.31

+ Recent posts