500 serverside 403 client side error

I use a transactional suse webserver

And I have tweaked the .conf files to no avail.

Everything gives the same error of missing an index.html and permission denied message.to the subfolder in the htdocs folder.

Also permissions checked and well.

What can I try to do?

<VirtualHost *:80>
    ServerName qrn.duckdns.org
    Redirect permanent / https://qrn.duckdns.org/
</VirtualHost>

<VirtualHost *:443>
    ServerName qrn.duckdns.org

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/qrn.duckdns.org/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/qrn.duckdns.org/privkey.pem

    ProxyPreserveHost On
    ProxyPass        /Bijbel/ http://127.0.0.1:2368/
    ProxyPassReverse /Bijbel/ http://127.0.0.1:2368/

    ErrorLog /var/log/apache2/ghost_error.log
    CustomLog /var/log/apache2/ghost_access.log combined
</VirtualHost>

Nginx runs in front of apache.

Just to confirm - you’re just using Apache (and Nginx??) as a reverse proxy, right? You’re not trying to serve Ghost’s files with Apache, or something?

Messages about index.html and htdocs are not coming from Ghost, so that suggests there’s something wrong with your setup – the proxied traffic is going to the wrong place.

I’m not sure this is the right place to get help (since it looks more like an Apache problem?), but if you do want help, you’re going to have to share some more details about the rest of your setup, including access or errors being logged by any of the three services (Nginx, Apache, and Ghost) in your stack. You’ll also need to share your nginx conf files.

You are totally right, a reverse proxy and standalone Node.js. The problem is that Apache does not send the request of folder /Bijbel/ to Ghost.

Nginx:

server {
            listen 80;
                server_name qrn.duckdns.org www.qrn.duckdns.org;
                    return 301 https://qrn.duckdns.org$request_uri;
            }

            server {
                        listen 443 ssl;
                            server_name qrn.duckdns.org;

                                ssl_certificate     /etc/letsencrypt/live/qrn.duckdns.org/cert.pem;
                                    ssl_certificate_key /etc/letsencrypt/live/qrn.duckdns.org/privkey.pem;

                                        location /Bijbel/ {
                                                        proxy_set_header   Host $host;
                                                                proxy_set_header   X-Real-IP $remote_addr;
                                                                        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
                                                                                proxy_set_header   X-Forwarded-Proto $scheme;
                                                                                        proxy_pass         http://127.0.0.1:2368;
                                                                                            }
                                                                                    }

                                                                                    server {
                                                                                                listen 443 ssl;
                                                                                                    server_name www.qrn.duckdns.org;

                                                                                                        ssl_certificate     /etc/letsencrypt/live/qrn.duckdns.org/cert.pem;
                                                                                                            ssl_certificate_key /etc/letsencrypt/live/qrn.duckdns.org/privkey.pem;

                                                                                                                return 301 https://qrn.duckdns.org$request_uri;
                                                                                                        }
localhost:~ # systemctl status ghost_qrn-duckdns-org.service
● ghost_qrn-duckdns-org.service - Ghost systemd service for blog: qrn-duckdns-org
     Loaded: loaded (/etc/systemd/system/ghost_qrn-duckdns-org.service; disabled; vendor preset: disabled)
     Active: active (running) since Mon 2025-09-29 09:45:29 CEST; 4h 31min ago
   Main PID: 17932 (node)
      Tasks: 11 (limit: 4515)
     CGroup: /system.slice/ghost_qrn-duckdns-org.service
             └─ 17932 /opt/node22/bin/node /srv/www/htdocs/Bijbel/current/index.js

Sep 29 09:45:54 localhost.localdomain node[17932]: [2025-09-29 09:45:54] INFO Updating incoming recommendations on boot
Sep 29 09:50:42 localhost.localdomain node[17932]: [2025-09-29 09:50:42] INFO [Recommendations] Updating recommendations metadata
Sep 29 10:36:24 localhost.localdomain node[17932]: [2025-09-29 10:36:24] INFO Worker for job "mentions-email-report" online
Sep 29 10:36:24 localhost.localdomain node[17932]: [2025-09-29 10:36:24] INFO Worker for job mentions-email-report sent a message: done
Sep 29 11:36:24 localhost.localdomain node[17932]: [2025-09-29 11:36:24] INFO Worker for job "mentions-email-report" online
Sep 29 11:36:24 localhost.localdomain node[17932]: [2025-09-29 11:36:24] INFO Worker for job mentions-email-report sent a message: done
Sep 29 12:36:24 localhost.localdomain node[17932]: [2025-09-29 12:36:24] INFO Worker for job "mentions-email-report" online
Sep 29 12:36:24 localhost.localdomain node[17932]: [2025-09-29 12:36:24] INFO Worker for job mentions-email-report sent a message: done
Sep 29 13:36:24 localhost.localdomain node[17932]: [2025-09-29 13:36:24] INFO Worker for job "mentions-email-report" online
Sep 29 13:36:24 localhost.localdomain node[17932]: [2025-09-29 13:36:24] INFO Worker for job mentions-email-report sent a message: done