Du bist nicht angemeldet.

#1 15.11.2020 22:59:47

Thorgrimsson
Mitglied

nginx php configuration fehler -> umleitung zu falscher website

Hallo,

ich habe mir via AUR die Software grocy installiert. (Haushaltsmangement und Vorratsplanung)
Auf dem selben Server habe ich auch noch eine Matrix Installation laufen die unter matrix.beispiel.domain bzw riot.beispiel.domain erreichbar ist.
Für grocy habe ich eine neue subdomain grocy.beispiel.domain anglegt und ein configurationfile unter sites-avaible bzw sites-enabled hinterlegt.
Wenn ich jetzt grocy.beispiel.domain eingebe komme ich auf der seite von matrix raus die mir sagt das mein synapse-server läuft. mit riot komme ich auch auf die entsprechende webbapp das scheint also soweit zu funktionieren.

Die Konfiguration für grocy.beispiel.domain:

 server {
        server_name grocy.beispiel.domain;

        access_log /var/log/nginx/demo-en.grocy.info.access.log;
        error_log /var/log/nginx/demo-en.grocy.info.error.log;

        root /usr/share/webapps/grocy/public;

        location / {
                try_files $uri /index.php$is_args$query_string;

                location ~* \.(php|inc)$ {
                        include fastcgi.conf;

                        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
                        fastcgi_index index.php;
                        fastcgi_intercept_errors on;
                        fastcgi_buffer_size 16k;
                        fastcgi_buffers 4 16k;
                }
        }

        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                log_not_found off;
                access_log off;
        }

        location ~ /\.ht {
                deny all;
        }
} 

Bin für jede Hilfe dankbar! wink

Beitrag geändert von Thorgrimsson (16.11.2020 13:15:29)

Offline

#2 15.11.2020 23:23:15

stefanhusmann
Moderator

Re: nginx php configuration fehler -> umleitung zu falscher website

Laufen die beiden Anwendungen beide unter Port 80? Falls ja, das würde ich trennen.

Offline

#3 16.11.2020 00:04:48

Thorgrimsson
Mitglied

Re: nginx php configuration fehler -> umleitung zu falscher website

Ok ja die liefen beide unter port 80 hab ich jetzt mal für grocy umgestellt da bekomm ich dann einen 502 bad gateway.

Offline

#4 16.11.2020 10:46:50

schard
Moderator

Re: nginx php configuration fehler -> umleitung zu falscher website

Die Ordner sites-available und sites-enabled sind ein Debian-Ding.
Standardmäßig gibt es diese nicht in der Nginx-Version von Arch Linux.
Wenn du diese beiden Ordner allerdings korrekt nutzt und letzeren als include in der /etc/ngin/nginx.conf konfiguriert hast, sollte dies natürlich auch unter Arch Linux funktionieren.
Dein Problem klingt mir danach, als ob die Konfigurationseinstellungen, insbesondere die virtuellen Server miteinander konfligieren.
Ein Hinweis darauf ist bereits die von dir fehlerhaft eingetragene Domain. Wenn der Server unter grocy.beispiel.domain erreichbar sein soll, dann ist es falsch, im Servernamen grocy.beispiel.co anzugeben.
Bitte gib alle verwendeten Nginx Konfigurationen an, damit wir dir hier weiterhelfen können.
Eine Überladung des Ports für mehrere vServer ist mit Nginx eigentlich kein Problem, sodass du mitnichten Webserver für verschiedene Domains auf verschiedenen Ports laufen lassen musst.
Bitte gibt auch relevante Journalauszüge an, damit wir sehen können, was bei Nginx ggf. falsch läuft. Die Information, dass es einen Bad Gateway Fehler gibt, ist leider unzureichend.

Offline

#5 16.11.2020 13:21:53

Thorgrimsson
Mitglied

Re: nginx php configuration fehler -> umleitung zu falscher website

das mit grocy.beispiel.domain war ein fehler von mir beim hier ins forum tippen sorry; hab ich jetzt oben auch korrigiert.
Die Konfiguration via sites-avaible und sites-enabled hab ich aus dem englischen Arch-Wiki.Doe funktioniert auch grundsätzlich bei mir; sites-enabled ist auch als include in nginx.conf konfiguriert.
Die restlichen Konfigurationen reich ich gleich nach.

Mir ist jetzt noch was aufgefallen, entschuldigt bitte das ich das vorher selber nicht gechekct habe aber das mit der Umleitung von grocy.beispiel.domain auf matrix.beispiel.domain tritt nur mit https:// auf, ich vermute da ich die grocy.beispiel.domain noch nicht für https eingerichtet habe. Bei http bekomme ich dann den bad gateway (hab ich grade auch mit Port 80 ausprobiert)

/etc/nginx/nginx.conf :

 #user html;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    include     sites-enabled/*;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
}
    #server {
        #listen       80;
        #server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        #location / {
        #    root   /usr/share/nginx/html;
        #    index  index.html index.htm;
        #}

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        #error_page   500 502 503 504  /50x.html;
        #location = /50x.html {
        #    root   /usr/share/nginx/html;
        #}

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    #}


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

/etc/nginx/sites-enabled/matrix.beispiel.domain

 server {
        server_name  matrix.beispiel.domain;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        location / {
                root /usr/share/nginx/html/beispiel;
                proxy_pass http://localhost:8008;
        }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/beispiel.domain/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/beispiel.domain/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = matrix.beispiel.domain) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen       80;
        server_name  matrix.beispiel.domain;
    return 404; # managed by Certbot

/etc/nginx/sites-enabled/riot.beispiel.domain : (müsste ich eigentlich noch in element umbennen weil da eigtl schon element läuft aber sollte für die benutzung ja erstmal keinen unterschie machen, oder?)

server {
        server_name  riot.beispiel.domain;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        location / {
                root /usr/share/nginx/html/riot.beispiel;
                proxy_pass http://localhost:8008;
        }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/beispiel.domain/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/beispiel.domain/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = riot.beispiel.domain) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen       80;
        server_name  riot.beispiel.domain;
    return 404; # managed by Certbot


}

/etc/nginx/sites-enabled/beispiel.domain : (bei der hab ich auch viel rumprobiert und bin auch gar nicht sicher ob ich die überhaupt brauche?)

server {
        server_name  beispiel.domain;

        #charset koi8-r;
        include /etc/nginx/fastcgi.conf;
        #access_log  logs/host.access.log  main;
        location / {
                root /usr/share/nginx/html;
                index index.php;
        }
        #location ~ \.php$ {
        # 404
        #try_files $uri /index.php$is_args$query_string;

#}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

}

Für die Journaleinträge hab ich grad noch ein bisschen zu wenig Ahnung was da relevant sein kann

Beitrag geändert von Thorgrimsson (16.11.2020 14:09:50)

Offline

#6 16.11.2020 21:25:35

frostschutz
Mitglied

Re: nginx php configuration fehler -> umleitung zu falscher website

Du solltest (für jede IP/Port) einen default_server festlegen (listen ... default_server), der nur eine statische Seite oder Fehlermeldung erzeugt. Dann ist klar was nginx ausliefern soll wenn der verwendete Hostname zu keiner deiner Angaben passt. Ansonsten ist das erste beste der Default Server und jeder unbekannte Host liefert Inhalte einer deiner anderen Seiten aus. Andere Möglichkeit ist daß PHP die falsche Datei aus dem falschen Verzeichnis lädt und somit trotz richtigem Hostname wieder die falschen Inhalte ausgeliefert werden. Was nun bei dir genau passiert, läßt sich aus der Ferne schwer beurteilen. Eventuell siehst du mehr, wenn du mit den Logfiles abgleichst (für jede Seite ein eigenes Logfile, dann weißt du bei welchem der Request gelandet ist) und/oder den Loglevel von nginx auf notice oder debug erhöhst.

Offline

#7 17.11.2020 18:53:55

Thorgrimsson
Mitglied

Re: nginx php configuration fehler -> umleitung zu falscher website

Also aus dem errorlog von grocy.beispiel.domain habe ich das hier gefunden:
unix:/var/run/php-fpm.sock failed (2: No such file or directory)

Lösung dafür war das ändern der Zeile in sites-avaible/grocy.beispiel.domain von

fastcgi_pass unix:/var/run/php-fpm.sock;
in fastcgi_pass unix:/run/php-fpm/php-fpm.sock;

Das ist wohl ein Fehler den ich vermutlich aus den Anleitungen für grocy übernommen habe die halt nicht für arch geschrieben sind.

Jetzt stimmt aber die Konfiguration von Nginx. Danke euch für die Hilfe wink
Allerdings hab ich jetzt noch ein Problem mit der Anwendung selbst.
Das werd ich mir aber erstmal in Ruhe selbst anschauen und falls ich nicht weiter komme oder falls ich die Lösung gefunden habe werd ich mich nochmal hier (oder in einem neuen Thread?) melden.

Beitrag geändert von Thorgrimsson (17.11.2020 18:56:45)

Offline

#8 17.11.2020 20:30:59

Thorgrimsson
Mitglied

Re: nginx php configuration fehler -> umleitung zu falscher website

Ich hoffe das passt wenn ich hier weitermache statt ein neues Thema aufzumachen.
Der jetzt unter http://grocy.beispiel.domain angezeigte Fehler lautet:

Slim Application Error

The application could not run because of the following error:
Details
Type: PDOException
Code: 14
Message: SQLSTATE[HY000] [14] unable to open database file
File: /usr/share/nginx/html/grocy/services/DatabaseService.php
Line: 39
Trace

#0 /usr/share/nginx/html/grocy/services/DatabaseService.php(39): PDO->__construct()
#1 /usr/share/nginx/html/grocy/services/DatabaseService.php(66): Grocy\Services\DatabaseService->GetDbConnectionRaw()
#2 /usr/share/nginx/html/grocy/services/DatabaseMigrationService.php(9): Grocy\Services\DatabaseService->ExecuteDbStatement()
#3 /usr/share/nginx/html/grocy/controllers/SystemController.php(20): Grocy\Services\DatabaseMigrationService->MigrateDatabase()
#4 /usr/share/nginx/html/grocy/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(43): Grocy\Controllers\SystemController->Root()
#5 /usr/share/nginx/html/grocy/vendor/slim/slim/Slim/Routing/Route.php(381): Slim\Handlers\Strategies\RequestResponse->__invoke()
#6 /usr/share/nginx/html/grocy/vendor/slim/slim/Slim/MiddlewareDispatcher.php(81): Slim\Routing\Route->handle()
#7 /usr/share/nginx/html/grocy/middleware/SessionAuthMiddleware.php(35): Slim\MiddlewareDispatcher->handle()
#8 /usr/share/nginx/html/grocy/vendor/slim/slim/Slim/MiddlewareDispatcher.php(283): Grocy\Middleware\SessionAuthMiddleware->__invoke()
#9 /usr/share/nginx/html/grocy/vendor/slim/slim/Slim/MiddlewareDispatcher.php(81): class@anonymous->handle()
#10 /usr/share/nginx/html/grocy/vendor/slim/slim/Slim/Routing/Route.php(341): Slim\MiddlewareDispatcher->handle()
#11 /usr/share/nginx/html/grocy/vendor/slim/slim/Slim/Routing/RouteRunner.php(84): Slim\Routing\Route->run()
#12 /usr/share/nginx/html/grocy/vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php(60): Slim\Routing\RouteRunner->handle()
#13 /usr/share/nginx/html/grocy/vendor/slim/slim/Slim/MiddlewareDispatcher.php(140): Slim\Middleware\RoutingMiddleware->process()
#14 /usr/share/nginx/html/grocy/vendor/slim/slim/Slim/Middleware/ErrorMiddleware.php(107): class@anonymous->handle()
#15 /usr/share/nginx/html/grocy/vendor/slim/slim/Slim/MiddlewareDispatcher.php(140): Slim\Middleware\ErrorMiddleware->process()
#16 /usr/share/nginx/html/grocy/vendor/slim/slim/Slim/MiddlewareDispatcher.php(81): class@anonymous->handle()
#17 /usr/share/nginx/html/grocy/vendor/slim/slim/Slim/App.php(215): Slim\MiddlewareDispatcher->handle()
#18 /usr/share/nginx/html/grocy/vendor/slim/slim/Slim/App.php(199): Slim\App->handle()
#19 /usr/share/nginx/html/grocy/app.php(68): Slim\App->run()
#20 /usr/share/nginx/html/grocy/public/index.php(27): require_once('/usr/share/ngin...')
#21 {main} 

bis jetzt habe ich versucht mit sudo chown -R http:http grocy die nötigen Rechte sicherzustellen, was die Ausgabe allerdings nicht verändert hat.
ich hab kontrolliert ob php-sqlite installiert ist und das die beiden Zeilen extension=pdo_sqlite und extension=sqlite3 unkommentiert sind.
Weiter komme ich grade nicht.

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums