2015-03-05 4 views
6

Ich versuche, die HTTP-Host-Header, die an meine php-basierte Anwendung (speziell Phabricator) übergeben wird, überschreiben, wenn Fastcgi_pass verwenden.
Ich habe eine Menge Beispiele dafür gefunden, wenn ich proxy_pass benutze, aber ich finde kein Beispiel dafür, wie man dies mit fastcgi_pass macht. Insbesondere möchte ich, dass die Proxy-PHP-Anwendung den Host-Header als "fabricator.localhost" anzeigt.Nginx: Host-Header überschreiben, wenn fastcgi_pass

(Der Grund dafür ist, dass ich mehrere Domains mit dem Phabricator Webapp zuordnen möge, aber es erlaubt nur eine Domäne zugeordnet wird, und es lehnt jegliche Anfragen nicht aus, dass eine Domäne.)

I Ich bin ziemlich neu beim Konfigurieren von Nginx mit FastCGI, also bin ich mir nicht sicher, wie schnell cgi funktioniert. Jede Hilfe wird geschätzt.

Hier ist meine Nginx-Server-Konfiguration:

server { 
    server_name phabricator.localhost www.example.com example.com; 
    root /opt/phabricator/phabricator/webroot; 

    location/{ 
     index index.php; 
     rewrite ^/(.*)$ /index.php?__path__=/$1 last; 
    } 

    location = /favicon.ico { 
     try_files $uri =204; 
    } 

    location /index.php { 
    fastcgi_pass localhost:9000; 
    fastcgi_index index.php; 

    #### HERE ARE MY ATTEMPTS ##### 
    #proxy_set_header HOST phabricator.localhost; 
    #fastcgi_param SERVER_NAME phabricator.localhost; 
    #fastcgi_pass_header 'Host: phabricator.localhost'; 
    #fastcgi_pass_header 'Host: phabricator.localhost'; 
    #add_header Host phabricator.localhost; 
    #proxy_set_header Host phabricator.localhost; 
    #### END ATTEMPTS #### 

    fastcgi_param REDIRECT_STATUS 200; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    fastcgi_param QUERY_STRING  $query_string; 
    fastcgi_param REQUEST_METHOD  $request_method; 
    fastcgi_param CONTENT_TYPE  $content_type; 
    fastcgi_param CONTENT_LENGTH  $content_length; 
    fastcgi_param SCRIPT_NAME  $fastcgi_script_name; 
    fastcgi_param GATEWAY_INTERFACE CGI/1.1; 
    fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 
    fastcgi_param REMOTE_ADDR  $remote_addr; 
    } 
} 

Antwort

9

Haben Sie versucht HTTP_HOST? Das Folgende funktioniert bei mir:

fastcgi_param HTTP_HOST phabricator.localhost; 
+0

Das scheint super geklappt zu haben! Vielen Dank! –

+0

Ich bin froh, dass es geholfen hat! –