3 votes

Interdit (403), lors de l'accès à server-status sur apache 2.2.22

J'obtiens l'erreur Forbidden en essayant d'accéder à www.website.com/server-status.

mod_status est activé

Le VirtualHost :

<VirtualHost *:8080>
   ServerName  website.com
   ServerAlias www.website.com
   DocumentRoot /var/www/wordpress/
   DirectoryIndex index.php
   <Directory /var/www/wordpress/>
      AllowOverride All
      Order Deny,Allow
      Allow from all
      Options +Indexes
   </Directory>

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from .website.com
</Location>

   ErrorLog /var/www/wordpress/logs/error.log
   CustomLog /var/www/wordpress/logs/access.log combined
</VirtualHost>

J'ai essayé de changer l'autorisation de .website.com pour l'IP du site Web et le même problème se produit. Lorsque j'essaie de le changer en Autoriser à partir de tous, j'obtiens un 404.

J'ai également essayé de définir l'autorisation à partir de 127.0.0.1 et d'accéder via lynx à partir du serveur, mais le problème est à peu près le même.

Voici l'erreur reçue dans le fichier error.log :

[error] [client 127.0.0.1] client denied by server configuration: /var/www/wordpress/server-status

De plus, j'ai désactivé le remplacement de l'emplacement de status.conf pour m'assurer que la seule définition de server-status sera dans le VirtualHost. La définition de l'emplacement de l'état du serveur dans apache.conf donne les mêmes résultats.

Une idée de ce que j'ai manqué ?

J'ai essayé d'assister les ressources suivantes, mais aucune ne m'a apporté de solution :

  1. Module Apache mod_status
  2. Statut du serveur Apache 403 à port non standard
  3. Poste de célibataire

Danke

4voto

David W Points 3365

L'allocation de la ligne n'a rien à voir avec votre site web. Allow from permet aux personnes possédant une adresse IP spécifique (ou un nom de domaine qui se résout en une IP) d'accéder à votre site web.

Donc, si votre maison a une adresse IP de 2.2.2.2, vous mettrez allow from 2.2.2.2 y NICHT allow from yourownwebsite.com .

Cela devrait résoudre votre problème de 403 (interdit), bien que je réalise que vous avez dit que vous avez essayé de changer cela en 127.0.0.1, et d'y accéder directement depuis le serveur. Avez-vous essayé de changer 127.0.0.1 en localhost ?

Maintenant, en ce qui concerne la 404. C'est un problème entièrement différent. C'est une erreur "Not Found", et non une erreur "forbidden".

Les conteneurs VirtualHost, par défaut, ne sont pas vraiment destinés à être utilisés avec mod_status. Cela ne fonctionnera tout simplement pas. Selon le ce site web vous avez deux options :

  1. Faites en sorte que le serveur écoute sur un autre port (par exemple 8080).
  2. Remplacez l'astérisque dans <VirtualHost *:80> par l'adresse IP publique de votre serveur - vous pourrez alors accéder à l'état du serveur. sólo à partir de localhost / 127.0.0.1

3voto

druss Points 131

Vérifiez si vous avez la bonne configuration de VirtualHost. Vous pouvez essayer de créer une configuration VirtualHost pour 127.0.0.1 comme ceci :

<VirtualHost *:80>
    ServerAdmin superadmin@somemail.com
    ServerName 127.0.0.1
    DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            AllowOverride All
    </Directory>
    <Directory /var/www>
      Options +FollowSymLinks
      AllowOverride None
      order allow,deny
      allow from all

    </Directory>

</VirtualHost>

Je l'ai trouvé. aquí

0voto

Chris Points 181

Je ne connais pas très bien WordPress, mais si c'est comme Laravel, Magento ou tout autre logiciel web fonctionnant sous Apache, il y a un problème de sécurité. .htaccess qui est situé dans le répertoire racine, un exemple simple de https://codex.wordpress.org/htaccess est juste ici :

 # BEGIN WordPress
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Je parierais de l'argent réel que si vous changez

AllowOverrides All

zu

AllowOverrides None

la page s'affiche, mais pour moi, la confusion entre le fichier .htaccess et le fichier httpd.conf, ainsi que l'horrible désordre que constituent tous les fichiers de conf d'Apache, je choisis de m'occuper de cela d'une manière différente.

Je choisis de changer le fichier .htaccess de ce qui est montré ci-dessus par exemple à :

 # BEGIN WordPress
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} /server-status
    RewriteRule ".?" "-" [S=1]
    RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Ainsi, le RewriteCond correspondra à l'url du point de terminaison et la RewriteRule passera outre la règle de contrôle qui réécrit tous les points de terminaison vers index.php afin que le moteur de Wordpress puisse fonctionner avec des urls dynamiques.

Il y a peut-être un moyen plus simple, mais je voudrais que mon http.conf soit ainsi :

<VirtualHost *:8080>
    ServerName  website.com
    ServerAlias www.website.com
    DocumentRoot /var/www/wordpress/
    DirectoryIndex index.php
    <Directory /var/www/wordpress/>
        AllowOverride All
        Order Deny,Allow
        Allow from all
        Options +Indexes
    </Directory>
    <Location /server-status>
        SetHandler server-status
        Order deny,allow
        Deny from all
        Allow from 10.0.0.0/24
    </Location>
    ErrorLog /var/www/wordpress/logs/error.log
    CustomLog /var/www/wordpress/logs/access.log combined
</VirtualHost>

des lectures de suivi ?

https://httpd.apache.org/docs/2.2/en/mod/mod_rewrite.html

https://httpd.apache.org/docs/2.2/howto/htaccess.html

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X