BETA

NginxでBasic認証(Laravel)

投稿日:2019-03-22
最終更新:2019-03-22

経緯

  • Laravelで作成中のWebサイトがある
  • あるURLには、すでにLaravelのl5-very-basic-authでBasic認証をかけていた
  • もう1か所別のURLに対して、Basic認証をかけたい
  • せや!NginxでBasic認証かけたろ!

かけてみた

以下をほぼ真似して、実施

結果

404 Not Found

なんで

ログをみてみる。
LaravelのHomesteadを使っている場合、以下にログがある
/var/log/nginx/homestead.test-error.log

/home/vagrant/code/XXXXX/public/YYYYYY/index.html" is not found (2: No such file or directory)  

考察

そのままindex.htmlを取得しにいってるから、Laravelのルーティングに載ってないのでは

もう一度nginx.confとにらめっこ

  location / {  
        try_files $uri $uri/ /index.php?$query_string;  

    }  

ん?

 try_files $uri $uri/ /index.php?$query_string;  

こいつでした!

結果

 location /YYYYY/ {  
        auth_basic "Auth";  
        auth_basic_user_file /etc/nginx/.htpasswd;  

        try_files $uri $uri/ /index.php?$query_string;  
    }  

これで動作しました!

try_filesってなんだ

  • 指定された順序でファイルがあるかチェックして、最初にマッチしたものを返す
  • 今回の件で、これを指定しないと、$url/index.html だけを取得しにいくと思われる
    try_files $uri $uri/ /index.php?$query_string;  
  • 今回の場合は、最後だけでよいのでは・・・
    try_files /index.php?$query_string;  
    で、restartしてみたら
    $ sudo service nginx restart  
    Job for nginx.service failed because the control process exited with error code.  
    See "systemctl status nginx.service" and "journalctl -xe" for details.  
    だめなのか。最初の$urlは必須なのかも
    try_files $uri /index.php?$query_string;  
    で、restart!
    うまくいきました
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

とある中小企業の社内SEの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!