Passenger Apache - Verboten Sie haben keine Berechtigung, auf diese Ressource zuzugreifen

Passenger Apache - Verboten Sie haben keine Berechtigung, auf diese Ressource zuzugreifen

Ich stecke mit Apacheder PassengerKonfiguration fest. Ich habe mehrere Tage damit verbracht, nach einer Lösung zu suchen.Ich folge dieser Anleitung.Ich erhalte diese Meldung im Browser:

Forbidden

You don't have permission to access this resource.

httpd.conf

# Use /usr/bin/node by default.
PassengerNodejs /usr/bin/node

<VirtualHost *:80>

    ServerName example.com

    RewriteEngine On 
    RewriteCond %{HTTPS} off
    RewriteCond %{SERVER_NAME} =example.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>

<VirtualHost *:443>

    ServerName example.com

    # Tell Apache and Passenger where your app's code directory is
        DocumentRoot /var/www/example.com
        PassengerAppRoot /var/www/example.com/

    # Tell Passenger that your app is a Node.js app
        PassengerAppType node
        PassengerStartupFile app.js

    # Relax Apache security settings
    <Directory /var/www/example.com>
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
        Options -MultiViews
        # Uncomment this if you're on Apache >= 2.4:
        Require all granted
    </Directory>

    CustomLog /var/log/httpd/example.com_access.log combined
    ErrorLog /var/log/httpd/example.com_error.log

    SSLEngine on
    SSLCertificateFile    /etc/letsencrypt/live/example.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/example.com/fullchain.pem
    Include /etc/letsencrypt/options-ssl-apache.conf

</VirtualHost>

In /var/log/httpd/example.com_error.log erhalte ich:

[Sat Sep 04 07:24:00.473120 2021] [autoindex:error] [pid 907862:tid 139932467173120] [client 85.89.184.79:50337] AH01276: Cannot serve directory /var/www/example.com/: No matching DirectoryIndex (index.html,index.php) found, and server-generated directory index forbidden by Options directive

Dateirechte

drwxr-xr-x. 5 root   root  102 Sep  3 23:53 ..
drwxr-xr-x. 8 root   root  163 Sep  4 07:11 .git
-rw-r--r--. 1 root   root   35 Sep  4 07:11 .gitignore
-rw-r--r--. 1 root   root  215 Sep  4 07:11 README.md
-rw-r--r--. 1 root   root  390 Sep  4 07:11 app.js
drwxr-xr-x. 3 root   root   21 Sep  4 07:12 node_modules
-rw-r--r--. 1 root   root 2655 Sep  4 07:12 npm-shrinkwrap.json
-rw-r--r--. 1 root   root  318 Sep  4 07:11 package.json
drwxr-xr-x. 2 root   root   22 Sep  4 07:11 public

curl http://127.0.0.1:3000/gibt „Hallo“ von Node.js/io.js + Connect.js zurück!

Gibt es etwas, das ich überprüfen sollte?

Antwort1

Dieser Fehler bedeutet, dass im Verzeichnis keine Standardindexdatei vorhanden ist. Angesichts der von Ihnen genannten Dateiliste ist dies bei Ihnen eindeutig der Fall.

Lösung:

  1. Erstellen Sie eine leere index.html-Seite in Ihrem öffentlichen Verzeichnis.

    touch /var/www/example.com/index.html
    
  2. Ändern Sie die Optionsdirektive in httpd.conf und fügen Sie Indizes hinzu:

    Options -MultiViews -Indexes
    
  3. httpd neu starten/neu laden

    service httpd reload
    

Bearbeiten:

Wenn Sie sich Ihre httpd.conf noch einmal ansehen, scheint es, als hätten Sie DocumentRoot nicht auf Ihr öffentliches Verzeichnis verwiesen. Deshalb:

  1. Ersetzen Sie das aktuelle DocumentRoot durch /var/www/example.com/public:
DocumentRoot /var/www/example.com/public
  1. Ändern Sie auch den Verzeichnispfad zum gleichen Pfad:
<Directory /var/www/example.com/public>

Weitere Informationen finden Sie unterPassagier-Website

verwandte Informationen