Могу ли я защитить вложенную папку public при обслуживании проекта Laravel через Apache? - PullRequest
0 голосов
/ 15 мая 2019

У меня запущено веб-приложение, созданное в Laravel и обслуживаемое через Apache.

Как известно, корень приложения Laravel - <path_to_project_code>/public.

Я хочу защищенную папку в /public, для точности: <path>/public/apidoc.

Я пытаюсь это

<VirtualHost <ip_redacted>:80>
        ServerName  www.mydomain.com
        ServerAlias www.mydomain.com
        ServerAdmin info@mycompany.it
        ServerPath  /www.mydomain.com

        DocumentRoot /var/www/www.mydomain.com/public/
        DirectoryIndex index.html index.php

        <Directory /var/www/www.mydomain.com/public/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
            Require all granted
        </Directory>

        <Directory "/var/www/www.mydomain.com/public/apidoc">
            AuthType Basic
            AuthName "Authentication Required"
            AuthUserFile "/etc/htpasswd/.www.mydomain.com.passwd"
            Require valid-user

            Order allow,deny
            Allow from all
        </Directory>

        CustomLog ${APACHE_LOG_DIR}/vhosts/www-mydomain-com/access.log vhost_combined
        ErrorLog  ${APACHE_LOG_DIR}/vhosts/www-mydomain-com/error.log

        RewriteEngine on
        RewriteCond %{SERVER_NAME} =www.mydomain.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>

Сконфигурированный, www.domain.com подается с ....../public, и это нормально. И www.domain.com/apidoc подается с ....../public/apidoc, и это нормально.

Но доступ к www.mydomain.com/apidoc НЕ требует http auth , как я хочу и как я ожидал.

Дополнительная информация

Содержимое / public / apidoc - это статические html-файлы, сгенерированные APIDocjs.

Простой эквивалент Nginx, работающего в разработке, из того, что я пытаюсь сделать, это

location /apidoc {
   auth_basic            "Restricted Area";
   auth_basic_user_file  /etc/nginx/sites-auth/www.mydomain.com.password;
}

Мне просто нужно перенести эти 4 строки из Nginx в Apache

1 Ответ

0 голосов
/ 15 мая 2019

Разрешено.

Я удалил весь раздел

<Directory "/var/www/www.mydomain.com/public/apidoc">
...
</Directory>

Чем создан /public/apidoc/.htaccess с этим содержимым

AuthType Basic
AuthName "APIDoc"
AuthUserFile  /etc/htpasswd/.www.mydomain.com.passwd
Require valid-user

Требуется действительный пользователь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...