Wie Sie alle vorhandenen statischen Dateien direkt mit NGINX bereitstellen, aber den Rest an einen Backend-Server übertragen.

location /{
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    if (-f $request_filename) {
        access_log off;
        expires 30d;
        break;
        }

    if (!-f $request_filename) {
        proxy_pass http://127.0.0.1:8080; # backend server listening
        break;
        }
    }

Oben wird dazu dienen, alle vorhandenen Dateien direkt mit Nginx (z.B. Nginx zeigt nur PHP-source-code), sonst weiterleiten einer Anfrage an Apache. Ich muss ausschließen *.php-Dateien von der Regel so, dass die Anfragen nach *.php sind auch übergeben an Apache und verarbeitet.

Möchte ich Nginx, um alle statischen Dateien und Apache-Prozess alle dynamischen Sachen.

EDIT: Es ist white-list Ansatz, aber es ist nicht sehr elegant, Sehen, all die Erweiterungen, das will ich nicht.

location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
    access_log off;
    expires 30d;
    }
location /{
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://127.0.0.1:8080;
    }

EDIT 2: Auf neueren Versionen von Nginx verwenden try_files statt http://wiki.nginx.org/HttpCoreModule#try_files

Kommentar zu dem Problem
Nur klare Dinge: obige code wird dazu dienen, eine statische Datei, wenn es vorhanden ist auf der Festplatte, wenn die Datei nicht existiert, wird der request an Apache. Dies funktioniert die meiste Zeit, da alle URLs in " meine Anwendungen verwenden mod_rewrite (oder routing) und nicht wirklich auf der Festplatte existieren. Nur der direkte Zugriff auf *.php Dateiname ist eine Ausnahme und muss analysiert werden, die von Apache. Kommentarautor: F. Malina

InformationsquelleAutor der Frage F. Malina | 2009-05-15

Schreibe einen Kommentar