laravel + nginx에서 특정 디렉토리에만 IP 주소 제한을 적용하는 방법
IP 주소 제한은 laravel 측에서 할 수 있지만, laravel + nginx의 설정으로 실시하는 경우의 설정 예가별로 보이지 않았기 때문에 정리했습니다.
허용하려는 IP 주소의 수가 1 개이면 적절한 곳에
if($_SERVER["REMOTE_ADDR"] !== "xxx.xxx.xxx.xxx"){
abort(403);
}
그래도 써 두면 좋지만, 수가 늘어나면 조금 귀찮게 되어 옵니다.
만약 추가 IP 주소를 서브넷 단위로 지정되면. . .
전제가 되는 laravel+nginx의 환경 구축
도커
Nginx
라라벨
이 기사의 전제가 되는 laravel+nginx+docker의 환경 구축은, 이쪽의 @ucan-lab씨의 신기사가 참고가 됩니다.
특정 디렉토리에만 IP 주소 제한을 적용하는 laravel+nginx 구성 파일
설정에 관계없는 곳은 생략하고 있으므로, nginx의 설정에 대해서는, 상기의 신기사를 참고로 해 주세요.
nginx.conf
# 以下の2つがnginxでlaravelを動作させるための基本的な設定です。
# 全てのリクエストをlaravelのrootであるindex.phpにリダイレクトする
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# .phpファイルをfastcgiで処理する
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
# ここからが、本題であるディレクトリIP制限になります。
# admin/ ディレクトリに制限をかける例
location /admin/ {
try_files $uri $uri/ /index.php?$query_string;
# allow ip list
allow xxx.xxx.xxx.xxx;
allow yyy.yyy.yyy.yyy;
deny all;
}
설정 포인트
아래의 location 설정만으로는,/admin/이하의 파일을 nginx가 그대로 표시하려고 하기 때문에, laravel로서 동작하지 않습니다.
location /admin/ {
allow yyy.yyy.yyy.yyy;
deny all;
}
그래서 location내에 index.php로 리디렉션하는 설정을 다시 한번 써줄 필요가 있었습니다.
try_files $uri $uri/ /index.php?$query_string;
물론 서브넷 단위로 지정도 가능합니다.
allow 192.168.1.0/24;
다만, 어플리케이션 전체의 보안 설정이 복수의 개소에 분산하게 되므로,/admin/이하의 컨트롤러나 route.php등에
/*
IP 주소 제한은 nginx 측에서 수행됩니다.
*/
라고 코멘트 해 두면, 장래의 자신이나 계승한 후임의 사람이 살아날 것입니다.
그래? 그런 보통 어디서 보안 설정하고 있는지 알 수 있을까?
달콤한
끝
이상으로 laravel의 특정 디렉토리에 IP 주소 제한을 걸 수있었습니다.
함께 읽고 싶은 laravel 보안 관련 기사
laravel로 연속 로그인에 실패하면 잠금을 걸어 보안을 더욱 높이는 방법
htps : // 이 m / Repa_Shar-kun / ms / 7에서 f0-c0 a 8647df10
이 기사가 도움이 되면
↓ 버튼을 눌러 응원해 ↓
Reference
이 문제에 관하여(laravel + nginx에서 특정 디렉토리에만 IP 주소 제한을 적용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/reopa_sharkun/items/98d1d930c60cc06108fc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)