2017-03-22 5 views
0

Ich habe einen Nginx mit Docker für meine Entwicklungsumgebung mit HTTP und HTTPS, hier ist die Konfiguration:Nginx Konfiguration hinter nginx Reverse Proxy

listen 80; 
listen 443 ssl; 

set_real_ip_from 10.0.0.0/8; 
real_ip_header X-Real-IP; 
real_ip_recursive on; 

location/{ 
    try_files $uri @rewriteapp; 
} 

location @rewriteapp { 
    rewrite ^(.*)$ /app.php/$1 last; 
} 

location ~ ^/(app|app_dev|app_test|config)\.php(/|$) { 
    fastcgi_pass php-upstream; 
    fastcgi_split_path_info ^(.+\.php)(/.*)$; 
    include fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    fastcgi_param HTTPS $https; 
} 

ich HTTP und HTTPS in meiner lokalen Umgebung testen will, aber in der Produktion I haben einen nginx Reverse-Proxy vor mit:

upstream app_upstream { 
    server app:80; 
} 

server { 
server_name $APP_DOMAIN; 

listen 443 ssl; 
ssl_certificate /run/secrets/app_cert.pem; 
ssl_certificate_key /run/secrets/app_key.pem; 

proxy_set_header HOST $host; 
proxy_set_header X-Forwarded-Proto $scheme; 
proxy_set_header X-Real-IP $remote_addr; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

location/{ 
    proxy_pass http://app_upstream; 
} 
} 

möchte ich den Reverse-Proxy auf die Anwendung nginx nur HTTPS und nach vorne akzeptieren, aber meine PHP-Anwendung hinter empfangen wird $ _SERVER [ 'HTTPS'] = ""

Ich möchte auch SSL-Zertifikat nur auf Reverse-Proxy, wie übertrage ich HTTPS von Reverse-Proxy zu Nginx zu PHP?

Antwort

0

Die Variable HTTPS ist auf $https festgelegt (die entsprechend der Verbindung zum Back-End-Server festgelegt wird, der immer HTTP ist), aber Sie möchten, dass sie entsprechend der weitergeleiteten Verbindung festgelegt wird.

Sie können die X-Forwarded-Proto-Kopfzeile verwenden, um die HTTPS-Variable mit einem map festzulegen. Zum Beispiel:

map $http_x_forwarded_proto $https_flag { 
    default off; 
    https on; 
} 
server { 
    ... 
    location ~ ^/(app|app_dev|app_test|config)\.php(/|$) { 
     ... 
     fastcgi_param HTTPS $https_flag; 
     ... 
    } 
} 

Weitere Informationen finden Sie unter this document.

Verwandte Themen