FastAPI app을 도커를 사용 하여 nginx에 연결 할 때
url_for 사용시 https가 적용 되지 않을 경우
nginx site.conf
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
템플릿 선언부
try:
import jinja2
if hasattr(jinja2, "pass_context"):
pass_context = jinja2.pass_context
else: # pragma: nocover
pass_context = jinja2.contextfunction # type: ignore[attr-defined]
except ImportError: # pragma: nocover
jinja2 = None # type: ignore
@pass_context # noqa
def url_for(context: dict, name: str, **path_params: typing.Any) -> str:
request = context["request"]
http_url = request.url_for(name, **path_params)
if request.url.scheme == 'https' or "x-forwarded-for" in request.headers.keys():
return http_url.replace("http", "https", 1)
else:
return http_url
templates = Jinja2Templates(directory="templates")
templates.env.globals["url_for"] = url_for