Nginx를 사용하면 동일한 server
블록 내에서 HTTP와 HTTPS를 모두 처리 할 수 있습니다 . 따라서 둘 다에 대한 지시문을 복제 할 필요가 없으며 보안하려는 경로를 리디렉션 할 수 있습니다
server {
listen 80 default_server;
listen 443 ssl;
... ssl certificate and other configs ...
location /user {
if ($scheme = 'http') {
rewrite ^ https://$http_host$request_uri? permanent;
}
}
... your basic configuration ...
}
수 있는지 확인 하지 넣어 ssl on
은 일반 HTTP를 깰 것이기 때문에이 선을.
선택적으로 동일한 방식으로 HTTPS의 다른 모든 요청을 HTTP로 다시 리디렉션 할 수 있습니다.
if ($scheme = 'https') {
rewrite ^ http://$http_host$request_uri? permanent;
}
업데이트 : Alexey Ten은 주석 섹션에서 친절하게 지적했듯이 scheme
각 요청을 확인 하는 것은 그리 좋은 생각이 아닙니다. nginx를 구성하는 선언적인 방법을 따라야합니다. 이 경우로 리디렉션 된 두 개의 서버 블록을 선언하고 location
공통 논리를 별도의 파일로 이동 include
시키십시오. 따라서 GruffTech의 답변이 더 좋습니다.