2017-01-28 5 views
1

Im auf einem subdir zur Einrichtung eines Proxy versucht, aber kann es nichtnginx Proxy nicht funktionierenden Server Block

funktioniert ... Ich möchte alle Anfragen in einem subdir auf einen anderen Port zu Proxy

zB

http://domain.com/websocket/test.php => http://domain.com:8080/websocket/test.php 

Aber kann es nicht machen .. arbeite ich jetzt habe versucht 404 zurück, wenn ein Pfad /websocket passend angefordert wird .. Aber das wird nicht funktionieren entweder

Wh bei vermisse ich hier ?!

PHP-Dateien, wie sie sollten .. ausgeführt

Dateistruktur

/test.php 
/websocket/server.php 
/websocket/test.php 

Alle URLs ohne Probleme angefordert werden, aber /websocket/server.php und /websocket/test.php sollte 404 zurückkehren (in der nginx conf sehen)

nginx

location/{ 
    try_files $uri $uri/ =404; 
} 

location ~ \.php$ { 
    include /var/ini/nginx/fastcgi.conf; 
    fastcgi_pass php; 
    fastcgi_index index.php; 
} 

location /websocket { 
    return 404; 

    proxy_pass http://localhost:8080; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header Host $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
} 

Antwort

1

Es gibt verschiedene Arten von location Blöcken und Regeln bezüglich ihrer Bewertungsreihenfolge. Details siehe this document.

Der Block location ~ ... ist ein regulärer Ausdruckstyp, der in der Reihenfolge ausgewertet wird, aber eine höhere Priorität hat als jeder Präfixstandort (z. B. location /websocket).

Wenn Sie ein Präfix Ort haben wollen höhere Priorität als den regulären Ausdruck Lage blockiert, entweder: - nutzen Sie den ^~ Modifikator oder - schalten Sie ihn in einen regulären Ausdruck Block und um es zuerst.

Zum Beispiel:

location ^~ /websocket { ... }