3

다음 nginx 구성이 있습니다.이 구성에 기본 인증을 추가하고 싶습니다.기본 인증을 nginx 구성에 다시 쓰기로 추가 할 수 있습니까

upstream phpfcgi { 
     server 127.0.0.1:7777; 
# server unix:/var/run/php5-fpm.sock; #for PHP-FPM running on UNIX socket 
} 
server{ 
    listen 80; 
    server_name qu.abc.com; 
    root /home/qu/website/current/web; 
    location/{ 
# try to serve file directly, fallback to rewrite 
      try_files $uri @rewriteapp; 

    } 

    location @rewriteapp { 
    # rewrite all to app.php 
      rewrite ^(.*)$ /app.php/$1 last; 
    } 

    location ~ ^/(app|app_dev|config)\.php(/|$) { 
      fastcgi_pass phpfcgi; 
      fastcgi_split_path_info ^(.+\.php)(/.*)$; 
      include fastcgi_params; 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      fastcgi_param HTTPS off; 
    } 

    error_log /var/log/nginx/project_error.log; 
    access_log /var/log/nginx/project_access.log; 
} 

나는 편집이

location/{ 
# try to serve file directly, fallback to rewrite 
      auth_basic "Restricted"; 
      auth_basic_user_file /home/qu/website/current/web/.htpassword; 
      try_files $uri @rewriteapp; 

    } 

에 위치 블록을하지만이 사람은 재 작동하지 않습니다. 누군가 도움이 될 수 있습니다.

+0

안녕하세요 @ PravinMishra 이미 적응하려고합니다. 내가 얻는 문제는 basic_auth에 대한 서버 검사 전에 재 작성이 완료된다는 것입니다. 그래서 basic_auth를 먼저 확인한 다음 다시 작성하여이 작업을 수행하는 방법이 필요합니다. 또는이를 수행 할 수있는 대안이있을 수 있습니다. –

답변

1

location이 아닌 전체 서버에 기본 인증을 사용하려는 경우 나에게 들려 줄 것입니다. location이 작동하는 방식은 한 번에 하나만 적용되므로, location에 인증 정책을 지정했지만 locationrewrite을 입력하면 다른 location은 (는)으로부터 인증 정책의 적용을받지 않습니다. 이전 location

auth_basic에 대한 설명서에 따르면,이 단지 location 컨텍스트에없는 사용 할 수있는 것처럼 보이지만, 너무 serverhttp,있다. 따라서

, 당신은 인증이 필요 단순히 하나의 server에있는에, 하나의 location에있는에서 한 단계 위로 당신의 auth_basic 지침을 모두 이동 server 전체를 원하는 경우.

+0

대단히 감사합니다. 당신이 제안한 것을 수행하는 동안 nginx가 심볼릭 링크 주소를 따르지 않는다는 것을 알았습니다. 그래서 나는 심볼릭 링크 주소가 가리키는 실제 주소를 사용해야한다. 나는 처음부터 내 문제의 근본 원인이라고 생각한다. –