mod_rewrite unter nginx

Status
Für weitere Antworten geschlossen.

neoman666

Benutzer
Mitglied seit
16. Dez 2018
Beiträge
40
Punkte für Reaktionen
0
Punkte
6
Hi,

auf meiner DS218 habe ich als Webserver den nginx laufen. Was muss ich tun, damit Joomla mit SEF aufgerufen werden kann. Im Apache habe ich ja das Modul mod_rewrite und dann die .htaccess im Joomla-Verzeichnis. Wie nutze ich das mit nginx, was muss ich das ändern.

Kann mir jemand helfen?


MfG neoman
 

4bob

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
604
Punkte für Reaktionen
2
Punkte
38
Hi; Du musst dir eine eigene NGINX config erstellen - Nutze die Suche, das findet sich hier häufiger.
Nach der root share Definition folgt SEF. >> https://docs.joomla.org/Nginx

Support Clean (aka Search Engine Friendly) URLs
Rich (BBCode):
location / {
        try_files $uri $uri/ /index.php?$args;
        }

Bob
 

neoman666

Benutzer
Mitglied seit
16. Dez 2018
Beiträge
40
Punkte für Reaktionen
0
Punkte
6
Danke für deine Antwort. Hab eine Datei nginx-rewrite.conf im Verzeichnis /etc/nginx/sites-enabled erstellt und dort deine Code reingeschrieben. Starte ich nun den nginx mit

nginx -s reload

neu, kommt folgende Fehlermeldung.

Rich (BBCode):
nginx: [emerg] "location" directive is not allowed here in /etc/nginx/sites-enabled/nginx-rewrite.conf:1

Irgendwas mache ich falsch, aber was?
 

4bob

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
604
Punkte für Reaktionen
2
Punkte
38
Das ist auch nicht richtig; du musst dir das Wiki ansehen hier wird eine vollständige Konfiguration gezeigt.
Diese musst du an die DS anpassen; also nutze die Suche - bitte nicht blind abtippen.

Das Code Schnipsel zeigt nur den verantwortlichen Teil "rewrite".
 

neoman666

Benutzer
Mitglied seit
16. Dez 2018
Beiträge
40
Punkte für Reaktionen
0
Punkte
6
Ok, was ich bis jetzt gemacht habe.

1. eine Datei names joomla.conf im Verzeichnis /etc/nginx/sites-enabled angelegt. So wie ich es gelesen habe, sollen dort alle Dateien, egal wie sie heißen, eingelesen werden. Ist das korrekt?
2. den Text aus den Link https://docs.joomla.org/Nginx abgetippt und in die Datei geschrieben
3. In der Datei folgende Parameter angepasst:

Rich (BBCode):
server_name YOUR_DOMAIN;

durch

Rich (BBCode):
server_name localhost;

ersetzt und

Rich (BBCode):
root PATH_ON_SERVER;

durch

Rich (BBCode):
root /volume/web;

ersetzt. Anschließend habe ich nginx mit

Rich (BBCode):
 nginx -s reload

neu gestartet. Leider funktioniert es immmer noch nicht. Die Startseite von Joomla wird korrekt angezeigt, klicke ich jedoch auf einen anderen Menüpunkt, kommt ein 404 Fehler.


Im error-Log von nginx steht folgendes:

Rich (BBCode):
2019/08/18 16:54:37 [error] 24150#24150: *17516 open() "/var/services/web/joomla/ueber-uns" failed (2: No such file or directory), client: 192.168.178.10, server: , request: "GET /joomla/ueber-uns HTTP/1.1", host: "192.168.178.100", referrer: "http://192.168.178.100/joomla/"


Was mache ich falsch? Kann mir jemand helfen?
 
Zuletzt bearbeitet von einem Moderator:

4bob

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
604
Punkte für Reaktionen
2
Punkte
38
Ein Blick auf deine vollständige joomla.conf wäre optimal.
location belassen so wie im Beitrag #2 ?
Zu 1 ja.
Änder mal das root auf /volume1/web/joomla/;
Du schreibst auch root /volume/web; :confused:
Zugriffsrechte können ausgeschlossen werden?
Rich (BBCode):
ls -ll /var/services/web/joomla/
 

neoman666

Benutzer
Mitglied seit
16. Dez 2018
Beiträge
40
Punkte für Reaktionen
0
Punkte
6
Hier meine komplette joomla.conf

Rich (BBCode):
server {
    listen 80;
    server_name localhost;
    server_name_in_redirect off;

    access_log /var/log/nginx/localhost.access_log;
    error_log /var/log/nginx/localhost.error_log info;

    root /volume1/web/joomla/;
    index index.php index.html index.htm default.html default.htm;
    # Support Clean (aka Search Engine Friendly) URLs
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # deny running scripts inside writable directories
    location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
        return 403;
        error_page 403 /403_error.html;
    }

    location ~ \.php$ {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi.conf;
    }

    # caching of files
    location ~* \.(ico|pdf|flv)$ {
        expires 1y;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
        expires 14d;
    }
}

Auch nachdem ich den root-Pfad angepasst habe, will es nicht gehen. Welche Berechtigungen muss denn das Verzeichnis bzw. die darin enthaltenen Dateien und Ordner haben? Diese haben momentan

meinSynologyBenutzer users
 

4bob

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
604
Punkte für Reaktionen
2
Punkte
38
Welche Berechtigungen muss denn das Verzeichnis bzw. die darin enthaltenen Dateien und Ordner haben? Diese haben momentan
meinSynologyBenutzer users
Damit die Webstation auch Zugriff hat musst du User und Gruppe auf http umstellen.

Rich (BBCode):
chown -R http:http /volume1/web/joomla

btw. dein php Aufruf wird so nicht funktionieren; welche Version hat du in der Webstation hinzugefügt?
 

neoman666

Benutzer
Mitglied seit
16. Dez 2018
Beiträge
40
Punkte für Reaktionen
0
Punkte
6
btw. dein php Aufruf wird so nicht funktionieren; welche Version hat du in der Webstation hinzugefügt?

Dann wird es wahrscheinlich an den php-Aufruf liegen, denn mit den geänderten Rechten bleibt der Fehler immer noch. Habe PHP 7.0 am laufen.

Wie muss denn der php-Aufruf aussehen?
 

4bob

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
604
Punkte für Reaktionen
2
Punkte
38
Sind die Fehler im log noch identisch?
Ich nutze 7.2: fastcgi_pass unix:/run/php-fpm/php72-fpm.sock;
Schau nach mit
Rich (BBCode):
ls -ll  /run/php-fpm |grep fpm.sock
Sollte so was wie php70-fpm.sock oder php7-fpm.sock sein.
 

neoman666

Benutzer
Mitglied seit
16. Dez 2018
Beiträge
40
Punkte für Reaktionen
0
Punkte
6
Ja Fehler im Log sind noch die gleichen. Bei mir kommt php70-fpm.sock

Wo muss das nun hin?
 

4bob

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
604
Punkte für Reaktionen
2
Punkte
38
Schau in der conf nach diesem Block:

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi.conf;
}

hier musst du den Aufruf fastcgi_pass 127.0.0.1:9000; mit
fastcgi_pass unix:/run/php-fpm/php70-fpm.sock; ersetzen.

Der localhost stört mich noch; hier sollte der NETBIOS Name der Syno hin; Aber starte mal so den Service durch und poste wenn's nicht geht das gesamte Log.
und bitte nur ab den signal process started ;)
Steht überhaupt was in den definierten log unter /var/log/nginx/localhost.error_log :confused:
die sind sicher leer; das kommt aus dem error log vom nginx selbst?
 

neoman666

Benutzer
Mitglied seit
16. Dez 2018
Beiträge
40
Punkte für Reaktionen
0
Punkte
6
Das ändern des php-Aufrufes hat leider auch keine Änderung gebracht. Hier das log was nach den "signal process started" steht:

Rich (BBCode):
2019/08/18 20:50:26 [error] 5426#5426: *19872 open() "/var/services/web/joomla/ueber-uns" failed (2: No such file or directory), client: 192.168.178.10, server: , request: "GET /joomla/ueber-uns/ HTTP/1.1", host: "192.168.178.100"
2019/08/18 20:50:26 [error] 5427#5427: *19874 open() "/var/services/web/missing" failed (2: No such file or directory), client: 192.168.178.10, server: , request: "GET /missing HTTP/1.1", host: "192.168.178.100", referrer: "http://192.168.178.100/joomla/ueber-uns"

mehr steht wirklich nicht drin
 

4bob

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
604
Punkte für Reaktionen
2
Punkte
38
Wie hast du Joomla installiert?

Bei mir läuft die neuste Version 3.9.11 in 1 min hiernach eingerichtet: https://docs.joomla.org/J3.x:Installing_Joomla/de
Mit deiner conf; klar auf php72 angepasst und so was wie joomla-access.log ;)
Der server_name localhost hatte keinen negativen Einfluss beim aufrufen der Seite.
 

neoman666

Benutzer
Mitglied seit
16. Dez 2018
Beiträge
40
Punkte für Reaktionen
0
Punkte
6
Meine Syno ist nur über die IP erreichbar. Einen NetBIOS-Namen hat sie meines Wissens nach nicht.

Wie habe ich mein Joomla installiert. Eigentlich so wie jeder halt. Mit Apache hat es ja funktioniert, deswegen denke ich das es nicht an Joomla selbst liegt.

Muss aber dazu sagen, das ich das Joomla auf einen anderen Rechner installiert habe und nur auf die Syno kopiert habe, mit DB natürlich. Vielleicht stimmt doch was mit der configuration.php von Joomla nicht.

Wenn ich http://192.168.178.100/joomla aufrufe, klappt das. Wenn ich aber http://192.168.178.100/joomla/ueber-uns aufrufe, kommt die besagte 404 Fehlermeldung.
 

4bob

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
604
Punkte für Reaktionen
2
Punkte
38
Meine Syno ist nur über die IP erreichbar. Einen NetBIOS-Namen hat sie meines Wissens nach nicht.

Mit NetBIOS Namen meinte ich den Kurznamen der Diskstation ohne DNS suffix;
Kann mir nicht vorstellen das keiner hinterlegt ist, aber egal .. s. #15

Wie habe ich mein Joomla installiert. Eigentlich so wie jeder halt.
Das denke ich nicht; hier wird der Großteil das fertige Paket von Synology nutzen.:p

Muss aber dazu sagen, das ich das Joomla auf einen anderen Rechner installiert habe und nur auf die Syno kopiert habe, mit DB natürlich. Vielleicht stimmt doch was mit der configuration.php von Joomla nicht.
Kommt aber früh der Hinweis; na dann kennst du ja jetzt die Ursache.
 

neoman666

Benutzer
Mitglied seit
16. Dez 2018
Beiträge
40
Punkte für Reaktionen
0
Punkte
6
Ich habe jetzt nochmal eine Joomla-Installation direkt übers Paketzentrum der Synology durchgeführt. Anschließend auf die neueste Joomla-Version geupdated.

Ins Backend eingeloggt, dann auf "System" -> "Konfiguration" geklickt. Unter "Site", rechts bei Suchmaschinenoptimierung "URL-Rewrite nutzen" auf "Ja" gestellt.

Nun einen neuen Menüpunkt mit Beitrag angelegt.

Rufe ich nun http://meine-syno-ip/joomla/ueber-uns auf, kommt auch wieder der 404-Fehler.

Also liegt es nicht an Joomla. Ich weiß nicht weiter.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat