2015-01-20 22 views
5

Tôi muốn chuyển hướng tất cả lưu lượng truy cập http đến https bằng một số ngoại lệ. Bất cứ điều gì với/exception/trong url tôi muốn giữ trên http.nginx chuyển hướng tất cả http đến https với ngoại lệ

Đã thử các đề xuất sau đây bởi Redirect all http to https in nginx, except one file

nhưng không hoạt động. Các/exception/url sẽ được chuyển từ nginx sang apache để xử lý php trong một khung làm việc của Laravel nhưng điều đó không quan trọng.

Bất kỳ đề xuất cải thiện nào được đánh giá cao!

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; 
} 

Trả lời

5

Nginx tìm vị trí phù hợp dài nhất và xử lý trước, nhưng việc trả lại ở cuối khối máy chủ đang được xử lý bất kể. Điều này sẽ chuyển hướng tất cả mọi thứ trừ/exception/được truyền ngược dòng.

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

Đã làm việc tuyệt vời, cảm ơn! – mba12

Các vấn đề liên quan