refresh_iwnl
New Member
Hallo zusammen,
vorab, ich bin ziemlich neu auf dem Gebiet, ich bin unheimlich dankbar für jeden noch so kleinen Hinweis / Tipp, den ich hier erhalten kann.
Seit vielen Tagen beschäftige ich mich damit, einen redirect loop Fehler zu lösen, ich komme einfach nicht weiter außer mit einer äußert außergewöhnlichen (eigentlich falschen lauten den Dokumentationen von Apache) Lösung
Hier das compose.yaml, mit dem ich den Caddy Reverse Proxy starte
Hier das compose.yaml
Hier die custom.conf, die ich im Dokerfile in den Apache container lade
Hier das Dockerfile für den Apache Docker container
Ordnerstruktur
/srv/compose.yaml (für Caddy reverse proxy)
/srv/lcmp_smartreparatur/compose.yaml (zum bauen der Container)
/srv/apache_docker/custom.conf (eigene Konfigurationsdatei für den Apache Docker container)
/srv/apache_docker/Dockerfile (für den Apache Docker container)
Das ganze läuft auf einem virtuellen Server mit AlmaLinux 8.
Der Caddy reverse proxy kümmert sich um die SSL-Zertifikate für alle Domains, die im /srv/lcmp_smartreparatur/compose.yaml über die labels
festgelegt wurden, das läuft einwandfrei.
Apache muss sich also nicht um das SSL-Zertifikat kümmern.
Sobald ich irgendwas an diesen Zeilen ändere, läuft es auf einen endlosen redirect loop hinaus. Laut Dokumentation soll beim ServerName niemals das Protokoll angegeben, wenn ich das allerdings entferne, funktioniert es nicht mehr...
Ich bin froh, dass das überhaupt funktioniert aber würde gerne wissen, warum das funktioniert und wie ich das verbessern kann weil ich einen anderen Server bereitstellen soll, wo ich ebenfalls in einen endlosen redirect loop laufe und dort aber nicht so einfach die Apache .conf anpassen kann.
Ich bin wie gesagt über jeden Hinweis unendlich dankbar!
Schönes Wochenende!
vorab, ich bin ziemlich neu auf dem Gebiet, ich bin unheimlich dankbar für jeden noch so kleinen Hinweis / Tipp, den ich hier erhalten kann.
Seit vielen Tagen beschäftige ich mich damit, einen redirect loop Fehler zu lösen, ich komme einfach nicht weiter außer mit einer äußert außergewöhnlichen (eigentlich falschen lauten den Dokumentationen von Apache) Lösung
Hier das compose.yaml, mit dem ich den Caddy Reverse Proxy starte
YAML:
---
services:
caddy:
image: lucaslorentz/caddy-docker-proxy:ci-alpine
ports:
- 80:80
- 443:443
environment:
- CADDY_INGRESS_NETWORKS=caddy
networks:
- caddy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- caddy_data:/data
restart: unless-stopped
networks:
caddy:
external: true
volumes:
caddy_data: {}
Hier das compose.yaml
YAML:
---
networks:
caddy:
external: true
internal:
driver: bridge
services:
php-lcmp-smartreparatur:
build: ./php_docker/
container_name: PHPFPM-SMARTREPARATUR
volumes:
- "./www/www/home:/var/www/html"
networks:
- internal
- caddy
apache-lcmp-smartreparatur:
build: ./apache_docker/
container_name: APACHE-SMARTREPARATUR
depends_on:
- php-lcmp-smartreparatur
restart: unless-stopped
volumes:
- "./www/www/home:/var/www/html"
labels:
caddy: smartreparatur.at, www.smartreparatur.at
caddy.reverse_proxy: "{{upstreams}}"
caddy.header.Server: ""
networks:
- internal
- caddy
mysql-lcmp-smartreparatur:
image: "mysql:8.0"
container_name: MYSQL-SMARTREPARATUR
environment:
MYSQL_ROOT_PASSWORD: <redacted>
volumes:
- "mysqldata:/var/lib/mysql"
networks:
- internal
phpmyadmin-lcmp-smartreparatur:
image: "phpmyadmin/phpmyadmin:latest"
container_name: PHPMYADMIN-SMARTREPARATUR
environment:
PMA_HOST: mysql-lcmp-smartreparatur
UPLOAD_LIMIT: 1024M
labels:
caddy: phpmyadmin.smartreparatur.at
caddy.reverse_proxy: "{{upstreams}}"
caddy.header.Server: ""
networks:
- internal
- caddy
depends_on:
- mysql-lcmp-smartreparatur
volumes:
mysqldata: {}
Hier die custom.conf, die ich im Dokerfile in den Apache container lade
Apache config:
LoadModule proxy_module /usr/local/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/local/apache2/modules/mod_proxy_http.so
LoadModule proxy_fcgi_module /usr/local/apache2/modules/mod_proxy_fcgi.so
LoadModule cache_module /usr/local/apache2/modules/mod_cache.so
LoadModule deflate_module /usr/local/apache2/modules/mod_deflate.so
LoadModule expires_module /usr/local/apache2/modules/mod_expires.so
LoadModule remoteip_module /usr/local/apache2/modules/mod_remoteip.so
LoadModule rewrite_module /usr/local/apache2/modules/mod_rewrite.so
<VirtualHost *:80>
ServerName smartreparatur.at
Redirect permanent / https://www.smartreparatur.at
</VirtualHost>
<VirtualHost *:80>
ServerName https://www.smartreparatur.at
# ServerAlias https://smartreparatur.at
DocumentRoot /var/www/html
# Enable Gzip compression (Deflate)
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
DeflateCompressionLevel 9
</IfModule>
# Set the ProxyTimeout globally for this VirtualHost
ProxyTimeout 60
# PHP and Proxy Configuration
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://php-lcmp-smartreparatur:9000"
</FilesMatch>
<Directory /var/www/html>
DirectoryIndex index.php
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Enable caching for static assets
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
# Security headers
<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
# Header set X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
</IfModule>
# Enable logging
# Log to standard output (stdout)
CustomLog /proc/self/fd/1 common
ErrorLog /proc/self/fd/2
</VirtualHost>
ServerSignature Off
ServerTokens Prod
Hier das Dockerfile für den Apache Docker container
Code:
# Use the official Apache base image
FROM httpd:2.4
# Set the timezone to Vienna
ENV TZ=Europe/Vienna
# Create log directory and set permissions
RUN mkdir -p /usr/local/apache2/logs && \
chmod -R 755 /usr/local/apache2/logs
# Copy your custom Apache configuration
RUN mkdir -p /usr/local/apache2/conf/extra
COPY ./custom.conf /usr/local/apache2/conf/extra/custom.conf
# Include the custom configuration in the main httpd.conf
#RUN echo "Include /usr/local/apache2/conf/extra/my-httpd.conf" >> /usr/local/apache2/conf/httpd.conf
RUN echo "Include /usr/local/apache2/conf/extra/custom.conf" >> /usr/local/apache2/conf/httpd.conf
# Ensure that the web directory exists
RUN mkdir -p /var/www/html
# Change ownership of the Apache directory to www-data user and group
RUN chown -R www-data:www-data /var/www/html
#USER www-data
HEALTHCHECK CMD curl --fail http://localhost/ || exit 1
Ordnerstruktur
/srv/compose.yaml (für Caddy reverse proxy)
/srv/lcmp_smartreparatur/compose.yaml (zum bauen der Container)
/srv/apache_docker/custom.conf (eigene Konfigurationsdatei für den Apache Docker container)
/srv/apache_docker/Dockerfile (für den Apache Docker container)
Das ganze läuft auf einem virtuellen Server mit AlmaLinux 8.
Der Caddy reverse proxy kümmert sich um die SSL-Zertifikate für alle Domains, die im /srv/lcmp_smartreparatur/compose.yaml über die labels
YAML:
labels:
caddy: smartreparatur.at, www.smartreparatur.at
caddy.reverse_proxy: "{{upstreams}}"
caddy.header.Server: ""
festgelegt wurden, das läuft einwandfrei.
Apache muss sich also nicht um das SSL-Zertifikat kümmern.
Sobald ich irgendwas an diesen Zeilen ändere, läuft es auf einen endlosen redirect loop hinaus. Laut Dokumentation soll beim ServerName niemals das Protokoll angegeben, wenn ich das allerdings entferne, funktioniert es nicht mehr...
Code:
<VirtualHost *:80>
ServerName smartreparatur.at
Redirect permanent / https://www.smartreparatur.at
</VirtualHost>
<VirtualHost *:80>
ServerName https://www.smartreparatur.at
# ServerAlias https://smartreparatur.at
Ich bin froh, dass das überhaupt funktioniert aber würde gerne wissen, warum das funktioniert und wie ich das verbessern kann weil ich einen anderen Server bereitstellen soll, wo ich ebenfalls in einen endlosen redirect loop laufe und dort aber nicht so einfach die Apache .conf anpassen kann.
Ich bin wie gesagt über jeden Hinweis unendlich dankbar!
Schönes Wochenende!