
Auf meiner Domain läuft eine Shopware-Installation (Version 6.5.5.1). Ich möchte weitere unabhängige Shopware-Installationen hinzufügen, die dieselbe Domain verwenden (für verschiedene Sprachen/Länder).
Zum Beispiel mydomain.com und mydomain.com/de, mydomain.com/en usw..
Ich habe zwei unabhängige Installationen:
/var/www/html/developer/dev-test
(gerwin-gesundheitsprodukte.com)/var/www/html/developer/dev-app1
(gerwin-gesundheitsprodukte.com/app1)
Die erste Installation (gerwin-gesundheitsprodukte.com) läuft einwandfrei, inklusive Backend.
Bei der zweiten Installation von Shopware habe ich versucht, meine NGINX-Konfiguration mithilfe eines Reverse-Proxys (Proxy-Passwort 127.0.0.1:81) zu erweitern.
Die Storefront der zweiten Installation (gerwin-gesundheitsprodukte.com/app1) öffnet sich ebenfalls, aber sobald ich auf das Backend (gerwin-gesundheitsprodukte.com/app1/admin) zugreifen möchte, erhalte ich eine Fehlermeldung:
Shopware\Administration\Controller\AdministrationController::index(): Argument #2 ($context) must be of type Shopware\Core\Framework\Context, null given, called in /var/www/html/developer/dev-app1/vendor/symfony/http-kernel/HttpKernel.php on line 182
Es scheint, dass einige Informationen ( $context
) den Proxy nicht passieren?
Was ist falsch an meiner Konfigurationsdatei und ist es grundsätzlich richtig, hierfür proxy_pass zu verwenden?
Zugehöriger Teil meiner Konfiguration:
server {
index index.php index.html;
server_name gerwin-gesundheitsprodukte.com;
client_max_body_size 128M;
location ^~ /app1 {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-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 https;
proxy_pass http://127.0.0.1:81;
proxy_redirect off;
}
#rest is Shopware standard config for first installation
}
server {
#the server block for the second installation
listen 81;
server_name 127.0.0.1;
set $subdir_root /var/www/html/developer/dev-app1/public;
root $subdir_root;
rewrite ^/app1(.*)$ /$1 break;
sub_filter "https://gerwin-gesundheitsprodukte.com/" "https://gerwin-gesundheitsprodukte.com/app1/";
sub_filter_once off;
#rest of the config
}
Hier ist die vollständige Konferenz:
server {
index index.php index.html;
server_name gerwin-gesundheitsprodukte.com;
client_max_body_size 128M;
location ^~ /app1 {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-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 https;
proxy_pass http://127.0.0.1:81;
proxy_redirect off;
}
root /var/www/html/developer/dev-test/public;
# Shopware update
location /recovery/update/ {
location /recovery/update/assets {
}
if (!-e $request_filename){
rewrite . /recovery/update/index.php last;
}
}
# new for Shopware 6.5
location /shopware-installer.phar.php {
try_files $uri /shopware-installer.phar.php$is_args$args;
}
location ~* ^.+\.(?:css|cur|js|jpe?g|gif|ico|png|svg|webp|html|woff|woff2|xml)$ {
expires 1y;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
access_log off;
# The directive enables or disables messages in error_log about files not found on disk.
log_not_found off;
tcp_nodelay off;
## Set the OS file cache.
open_file_cache max=3000 inactive=120s;
open_file_cache_valid 45s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
try_files $uri /index.php$is_args$args;
}
location ~* ^.+\.svg$ {
add_header Content-Security-Policy "script-src 'none'";
}
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi.conf;
fastcgi_param HTTP_PROXY "";
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
send_timeout 300s;
client_body_buffer_size 128k;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
http2_push_preload on;
}
}
server {
# Virtual host for web application 1:
# - Only local (127.0.0.1), cannot be addressed directly (without gateway host).
# - Listens on port 81 (HTTP) - IPv4 and IPv6.
# - Is capable of serving requests for local IP address 127.0.0.1.
listen 81;
server_name 127.0.0.1;
set $subdir_root /var/www/html/developer/dev-app1/public;
root $subdir_root;
rewrite ^/app1(.*)$ /$1 break;
sub_filter "https://gerwin-gesundheitsprodukte.com/" "https://gerwin-gesundheitsprodukte.com/app1/";
sub_filter_once off;
# Shopware update
location /recovery/update/ {
location /recovery/update/assets {
}
if (!-e $request_filename){
rewrite . /recovery/update/index.php last;
}
}
# new for Shopware 6.5
location /shopware-installer.phar.php {
try_files $uri /shopware-installer.phar.php$is_args$args;
}
location ~* ^.+\.(?:css|cur|js|jpe?g|gif|ico|png|svg|webp|html|woff|woff2|xml)$ {
expires 1y;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
access_log off;
# The directive enables or disables messages in error_log about files not found on disk.
log_not_found off;
tcp_nodelay off;
## Set the OS file cache.
open_file_cache max=3000 inactive=120s;
open_file_cache_valid 45s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
try_files $uri /index.php$is_args$args;
}
location ~* ^.+\.svg$ {
add_header Content-Security-Policy "script-src 'none'";
}
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param DOCUMENT_ROOT $subdir_root;
fastcgi_param HTTPS on;
fastcgi_param HTTP_PROXY "";
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
send_timeout 300s;
client_body_buffer_size 128k;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
http2_push_preload on;
}
}