NGINX + Plesk + PHP-FPM ... Rewrite Optionen für NGINX festlegen

Maestro2k5

Bekanntes Mitglied
Lizenzinhaber
Registriert
28. März 2013
Beiträge
3.200
Punkte
178
XF Version
  1. 2.2.10 PL1
XF Instanz
Hosting
PHP-Version
8.1,x
MySQL/MariaDB
10.5.x
Provider/Hoster
Dogado
Hallo,

ich habe nun ein Server der eigentlich super läuft und habe da auch das NGINX Zeugs aktiviert. Nun habe ich meine .htaccess datei

# Mod_security can interfere with uploading of content such as attachments. If you
# cannot attach files, remove the "#" from the lines below.
# <IfModule mod_security.c>
# SecFilterEngine Off
# SecFilterScanPOST Off
# </IfModule>

ErrorDocument 401 default
ErrorDocument 403 default
ErrorDocument 404 default
ErrorDocument 500 default

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,QSA,L]
RewriteRule ^index.html$ / [R=301,L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !(/$)
RewriteCond %{SERVER_PORT} 80
RewriteRule (.*) https://www.android-port.de/$1 [R=301,L]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://www.android-port.de/$1 [L]

#RewriteCond %{HTTP_HOST} !^www\.android-port\.de [NC]
#RewriteRule ^(.*)$ http://www.android-port.de/$1 [L,R=301]

# If you are having problems with the rewrite rules, remove the "#" from the
# line that begins "RewriteBase" below. You will also have to change the path
# of the rewrite to reflect the path to your XenForo installation.


# This line may be needed to enable WebDAV editing with PHP as a CGI.
#RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml) - [NC,L]
RewriteRule (robots\.txt)$ robots.php [NC,L]
RewriteRule ^.*$ index.php [NC,L]
</IfModule>


folgende NGINX Einstellungen konvertieren lassen.


if ($http_host !~ "^www\."){
set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
rewrite ^/(.*)$ https://www.$http_host/$1 permanent;
}
rewrite ^/index.html$ / permanent;
if (-d $request_filename){
set $rule_2 1$rule_2;
}
if ($uri !~ "(/$)"){
set $rule_2 2$rule_2;
}
if ($server_port ~ "80"){
set $rule_2 3$rule_2;
}
if ($rule_2 = "321"){
rewrite /(.*) https://www.android-port.de/$1 permanent;
}
if ($server_port !~ "^443$"){
set $rule_3 1$rule_3;
}
if ($rule_3 = "1"){
rewrite /(.*) https://www.android-port.de/$1 last;
}

if (!-e $request_filename){
rewrite ^(.*)$ /index.php break;
}

location ~* \.(ac3|avi|bmp|bz2|css|cue|dat|doc|docx|dts|exe|flv|gif|gz|htm|html|ico|img|iso|jpeg|jpg|js|mkv|mp3|mp4|mpeg|mpg|ogg|pdf|png|ppt|pptx|qt|rar|rm|swf|tar|tgz|txt|wav|xls|xlsx|zip)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
try_files $uri @fallback;
}

gzip on;
gzip_proxied any;
gzip_types text/plain text/xml text/css application/x-javascript;
gzip_vary on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";


leider erhalten meine USer seit kurzem folgende Fehler:

AP.png


jemand ne Idee was da falsch ist.
 
schau mal ins error log von nginx.
 
Und Meister, hast du die Logs gefunden?

Die Rewirtes sehen wild aus. Ehrlich gesagt habe ich sowas noch nie in NGINX gesehen.
Auf XF.com gibt es einige Leute, die sich besser damit auskennen aber wenn das deine ganze Conf für die Domain ist, sehe ich schon auf Anhieb einige Probleme.

Zum Beispiel ist dein Install Verzeichnis nicht vor Zugriff geschützt und deine Admin Oberfläche ebenfalls nicht.

Ich würde da einen Passwort Schutz drauf legen. Jedenfalls habe ich das bei mir so gemacht.
 
Und Meister, hast du die Logs gefunden?

Die Rewirtes sehen wild aus. Ehrlich gesagt habe ich sowas noch nie in NGINX gesehen.
Auf XF.com gibt es einige Leute, die sich besser damit auskennen aber wenn das deine ganze Conf für die Domain ist, sehe ich schon auf Anhieb einige Probleme.

Zum Beispiel ist dein Install Verzeichnis nicht vor Zugriff geschützt und deine Admin Oberfläche ebenfalls nicht.

Ich würde da einen Passwort Schutz drauf legen. Jedenfalls habe ich das bei mir so gemacht.

Das Log ja bzw der Fehler ist weg. Aber ja ich definiere nur diese Regeln in Plesk da ja mit nginx die .httaccess datei nicht greift.

Die NGINX Regeln sind absoluter Käse.

Schau mal da:
https://www.axivo.com/resources/nginx-basic-configuration.3/

Reicht vollkommen. Keine speziellen Rewrites für XF notwendig!

Ich habe das versucht in plesk einzufügen, aber das läuft nur bedingt. Es werden dann z.B. die Links die von www.android-port.de kommen nicht mehr auf die https://www.android-port.de weitergeleitet so wie ich das gerne hätte.
 
Nachtrag;

zwecks der Ordner diese also diese zu schützen wäre es dann so oder irre ich mich?

location ~ /(dir1|dir2|dir3) {
deny all;
return 404;
}

oder wenn es nur ein Ordner ist so?

location /testdir {
deny all;
return 404;
}

wäre jetzt für /internal_data, /library ?

dies müsste ich dann auch in der nginx regel definieren?

-------

zu dem Ordnerschutz mit Passwort

# nginx configuration auth_basic "MySQLDumper"; auth_basic_user_file /pfad/.htpasswd;

nun die frage kann die .htpasswd gleich bleiben wie vorher? Und wo definiere ich welche Ordner damit geschützt werden?

ok, ich habs also die .htpasswd kann weiter verwendet werden und um es auf einen ordner zu ddefinieren sollte es so z.B aussehen.

location /zu schützender ordner (Pfad)/ {
auth_basic "Restricted";
auth_basic_user_file /pfad/.htpasswd;
}

^^ Läuft so, aber ich kann es nur für einen ordner festlegen.
 
Zuletzt bearbeitet:
Passwortschutz macht wohl mehr Sinn. Du willst ja selber noch darauf zugreifen :)
 

Das habe ich versucht, aber das beißt sich wohl mit den dingen die ich in plesk einfügen kann, mit dem oben vorhanden rewrites geht es bisher.
Ich habe jetzt verschiedene Varianten versucht.

Passwortschutz macht wohl mehr Sinn. Du willst ja selber noch darauf zugreifen :)
Das versuche ich ja gerade, bisher geht es nur für einen Ordner.

Ich stelle gleich dieses NGINX Zeugs aus, es ist zwar schnell aber es nervt :D
 
Na normalerweise würde man sich ja auch VOR der Installation eines neuen Webserver Systems mit der Software vertraut machen, die man nun einsetzen will.
 
Das ist ne Standard-Installation und naja Supportmäßig soll ja alles so laufen. Ich meine es läuft ja auch soweit alles nur halt nicht so wie ich das gern hätte.

Ich habe ja auch die Wahl normal den Apache zu nutzen, dann hätte ich den Ärger nicht. Aber dachte mir das es so einfach performanter ist. Und einsetzen will ist gut gesagt. Ich möchte nur das es funktioniert ... wie und mit was war mir bisher egal. Aber ich habe schon einiges hinbekommen das sollte es daran nicht scheitern.
 
So, wie du das konfigurierst ist das nicht performanter, sondern ein riesiges Sicherheitsproblem.
 
Danke für die Aufschlussreiche Antwort, ich weiß ja das ich keine Ahnung habe, das muss man mir auch nicht vorhalten. Ich bin aber durchaus bereit zu lernen und mich einzulesen und es vernüftig zu machen. Nur wäre es dann durchaus hilfreich die Antworten etwas ausführlicher zu gestallten wo denn genau die Probleme liegen (Außer die die vor meinem Rechner sitzen).

Ich habe nicht mal viel konfiguriert. Außer halt oben die rewrite regeln, der rest ist standard installation / plesk.
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    58,8 KB · Aufrufe: 8
Ich kenne mich mit diesem Plesk- Schrott nicht aus, aber wenn ich dein Screen richtig interpretiere, werden die Webseiten weiterhin von dem Apache ausgegeben und der Ngnix dient nur als reverse Proxy für statische Dateien und für das Verarbeiten der PHP Dateien.

Vom daher wären Nginx rewrites fällig unnötig.
 
Fein, dann schalte das aus. Bei deinem Useraufkommen ist das doch total Latte.
 
Dann mache ich das, dachte es wäre Sinnvoll. Ich meine sonst läuft meine Seite eigentlich recht schnell. Besser als vorher habe ich den Eindruck.

Edit. Es ist ausgeschaltet. Aber ich finde das man vorher flüssiger navigieren konnte im Forum, aber denke das täuscht.
 
Ja das ist ja auch sinnvoll aber eben nur für Leute, die sich damit auskennen.

Ich selber haben einen Nginx ohne Plesk laufen und habe mich erst mal einen Monat in die Materie eingearbeitet.
Ich muss aber auch viele Anfragen gleichzeitig abwickeln und da ist das System sehr performant.

Arbeite dich doch in der Zwischenzeit in die Materie ein und dann kannst du, wenn du es drauf hast auch ganz auf Nginx wechseln.
 
Zurück
Oben