홈>
Http에서 Https로 트래픽을 전달해야합니다. SSL은로드 밸런서에 있으므로
plug_ssl
를 사용하여 헤더를 전달하기 만하면됩니다.
내
prod.exs
에서
추가했습니다 :
config :web, Web.Endpoint,
force_ssl: [rewrite_on: [:x_forwarded_proto]]
내
prod.exs
에서
config :web, Web.Endpoint
에서 다른 모든 것을 제거하십시오.
작동하지 않습니다.
내가 뭘 잘못하고 있니?
와이즈 비즈를 넣어야합니까?
내
force_ssl
에서
?
미리 감사합니다.
router
- 답변 # 1
- 답변 # 2
보통 Healthchecker는 앱이있는 도메인이 아닌 로컬 네트워크를 사용하여 서버를 직접 호출합니다. 이 방법으로 지역 주소를
kubectl describe ingress YOUR-INGRESS-HERE
에 넣을 수 있습니다 옵션.이것이 내가 한 일입니다 :
exclude
와이즈 비즈
config :my_app, MyApp.Endpoint, force_ssl: [rewrite_on: [:x_forwarded_proto], exclude: ["localhost", "${IP_ADDRESS}"]],
를 사용하여 환경 변수 (배포 유형에 따라 배포 유형에 따라 다름)에서 얻었습니다. . 그러나IP_ADDRESS
를 사용하지 않으면 다음과 같은 방법으로 환경 변수를 얻을 수 있습니다.distillery
distillery
관련 자료
- .htaccess - Http 및 www 하위 도메인 트래픽을 https로 자동 리디렉션
- IIS 10 URL HTTPS로 HTTP 트래픽을 다시 작성하지 않음
- .htaccess - 모든 트래픽 (http 및 https)을 다른 도메인의 루트로 리디렉션
- networking - 프록시 서버를 통해 모든 웹 트래픽 (https 포함) 리디렉션
- Azure 끝점 (DNS/고정 IP)에서 호스팅되는 트래픽을 다른 외부 IP 주소로 리디렉션하는 방법
- amazon web services - elb에 대한 HTTPS 트래픽을 종료하고 컨테이너가 HTTP를 실행하는 방법 (원거리)
- ssl - nginx-ingress-controller의 기본 백엔드에서 HTTPS 리디렉션이 작동하지 않습니다
- windows - openVPN 터널 "분할 터널"을 통해 특정 트래픽을 어떻게 리디렉션합니까?
- .htaccess - 아파치 www, https - // www를 https가 아닌 www가 아닌 url로 리디렉션
- Kubernetes 컨테이너에서 직접 HTTPS 트래픽을 종료하는 방법
- Elixir Ecto Phoenix - 엘릭서 엑토 피닉스 - 문자열 날짜 형식"yyyy-mm-dd"와 #datetime 비교
- angular - firebase 호스팅과 같이 http - //를 https : //로 리디렉션하는 방법
- angular - IIS는 동일한 IIS에서 동일한 도메인 이름에 대해 HTTP를 HTTPS로 리디렉션합니다
- php - htaccess 파일을 사용하여 웹 사이트 url을 https - //로 리디렉션하는 방법
- HTTPS 및 nginx 용 certbot을 사용하여 www를 www가 아닌 www로 리디렉션하는 방법
- amazon web services - 트래픽을 도메인으로 리디렉션
- reactjs - IIS에서 React에 대한 Http에서 https로 리디렉션
- html - 직접 방문시 리디렉션없이 HTTPS 버전 강제 적용
- apache - https가 아닌 www를 www로 리디렉션
- linux - Nginx에서 https 리디렉션을 사용하여 www를 기본 도메인으로 리디렉션하는 방법은 무엇입니까?
관련 질문
- 악의적인 요청으로 Elixir Phoenix/Plug에서 예외가 발생함
- postgresql : 혼합 ecto.create 실패(**(Postgrex.Error) FATAL 28000(invalid_authorization_specification) 사용자 "postgres"에 대한 ID 인증 실패
- http - 특정 머신에서 HTTPoison 요청이 실패하지만 다른 머신에서 작동
- 엘릭서 피닉스 웹 콘솔
- elixir - 컴파일 오류 - user __ struct __/1이 정의되지 않았으므로 struct user를 확장 할 수 없습니다
- elixir phoenix 릴리스를 사용하여 docker 컨테이너에서 데이터베이스를 롤백하는 방법과 가이드의 예제 MyAppReleaserollback
- elixir - Phoenix LiveView form_for POST에서 NoRouteError 발생
- elixir - Phoenix로 컨트롤러 클래스에서 만든 맵 또는 목록의 값을 표시하는 방법
- elixir - Phoenix LiveView에서 handle_info/2를 테스트하는 방법?
- elixir - EEx Phoenix 템플릿으로 중첩 값에서 nil을 확인하는 방법
force_ssl
를 활성화해야 할 것입니다 상태 확인에 사용되지 않는 엔드 포인트 또는 이와 관련된 것으로 만 연결하십시오.GKE의 k8s Ingress와 비슷한 문제가 있었고 해결책은
force_ssl
를 넣는 것이 었습니다 내 응용 프로그램 경로에 대해서만라우터에서 (내 건강 점검 경로로 구성된) HTTP를 사용합니다./healthz
의 예 :여기
# Tells if we need to enforce SSL for our endpoints. # Only production/staging should enforce config :my_app, force_ssl: true config :my_app, MyAppWeb.Endpoint, load_from_system_env: true, url: [host: "${APP_HOST}", port: 80], server: true, http: [port: "${PORT}"], url: [scheme: "https", host: "${APP_HOST}", port: 443], secret_key_base: "${SECRET_KEY_BASE}"
의 예가 있습니다. :디버그하기가 약간 까다 롭다.
defmodule MyAppWeb.Router do use MyAppWeb, :router # This route will NOT enforce SSL get("/healthz", MyAppWeb.HealthCheckController, :show) pipeline :api do plug(:accepts, ["json"]) if Application.get_env(:my_app, :force_ssl) do plug(Plug.SSL, rewrite_on: [:x_forwarded_proto], host: nil) end end scope "/", MyAppWeb do pipe_through(:api) # My routes will go here, and will be enforced if the # application flag `force_ssl` is enabled. end end
를 사용하는 경우kubernetes
를 사용해보십시오 테스트를 수행하는 동안 요청 및 응답에 대한 헤더를 항상 확인하십시오.