2015-01-20 20 views
5

Chciałbym przekierować cały ruch http do https z kilkoma wyjątkami. Wszystko z/wyjątkiem/w adresie URL Chciałbym zachować na http.nginx przekierowuj wszystkie http na https z wyjątkami

próbowałem następujących sugerowanych przez Redirect all http to https in nginx, except one file

ale to nie działa. Plik/exception/urls zostanie przekazany z nginx do apache dla przetwarzania php w frameworku laravel, ale to nie powinno mieć znaczenia.

Wszelkie sugestie dotyczące ulepszeń docenione!

server { 
    listen 127.0.0.1:80; 

    location/{ 
     proxy_pass http://127.0.0.1:7080; 
     proxy_set_header Host    $host; 
     proxy_set_header X-Real-IP  $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Accel-Internal /internal-nginx-static-location; 
     access_log off; 
    } 

    location /exception/ { 
     # empty block do nothing 
     # I've also tried adding "break;" here 
    } 

    return 301 https://localhost$request_uri; 
} 

Odpowiedz

5

Nginx znajduje najdłuższe pasujące miejsce i najpierw je przetwarza, ale twój powrót na końcu bloku serwera był przetwarzany niezależnie. To przekieruje wszystko, ale/wyjątek /, który jest przekazywany w górę strumienia.

server { 
    listen 127.0.0.1:80; 
    access_log off; 

    location/{ 
     return 301 https://localhost$request_uri; 
    } 

    location /exception/ { 
     proxy_pass http://127.0.0.1:7080; 
     proxy_set_header Host    $host; 
     proxy_set_header X-Real-IP  $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Accel-Internal /internal-nginx-static-location; 
    }  
} 
+0

Pracowałem świetnie, dzięki! – mba12