nginx에게 특정 PHP 문서를 SSL로 암호화하도록 지시

nginx에게 특정 PHP 문서를 SSL로 암호화하도록 지시

다음 설정으로 서버를 설정했습니다.

server {
   server_name www.example.com
   listen 443;
   listen 80;

   location /login\.php
   {
   rewrite ^(.*) https://www.example.com/login.php$1 last;        
   }

   .. other settings
}

그러나 이 설정에서는 리디렉션 오류(리디렉션이 너무 많음)가 발생합니다. SSL을 원하는 login.php 파일이 있고 다른 모든 파일은 SSL 없이 제공된다는 것을 nginx에 알릴 수 있는 방법이 있습니까?

답변1

nginx 0.7.14부터 별도의 서버 {} 블록으로 분할하지 않고도 http 및 https 제공을 위한 압축 구성을 생성할 수 있습니다.

listen 80;
listen 443 ssl;

# rest ssl configuration...

여러 위치를 보호하려면 sсheme을 확인하고 "return" 또는 "rewrite"를 사용하여 리디렉션하십시오.

location = /login.php {

      if($scheme = "http") {
              rewrite ^ https://$host$request_uri? permanent;
      }

      ...
}

답변2

가능하지만(다른 답변 참조) 일반적으로 모든 것을 암호화하는 것이 더 좋습니다. 사용자 이름과 비밀번호를 안전하게 전송한 다음 전체 계정 액세스 쿠키를 일반 텍스트로 제공하는 것은 전혀 암호화하지 않는 것만큼 위험합니다.

이것이 얼마나 위험한지 보여주는 예로서, 이 실수를 이용하여 자동으로 트위터/페이스북/구글 등 사용자를 소유하는 프로그램을 보려면 여기를 참조하세요 -->http://codebutler.com/firesheep

답변3

listen 80;및 를 listen 443;별도의 블록에 넣으세요 server.

그만큼SSL 구성(".. 기타 설정"에 있다고 가정)은 server포트 443에서 수신 대기하는 블록에만 들어가야 합니다.

관련 정보