Theo tài liệu riêng của họ, if
là Ác . Họ đã đưa ra một số ví dụ rằng một số cấu hình nhất định sẽ không hoạt động nếu một lệnh if
được sử dụng. Họ không đi sâu vào chi tiết về lý do tại sao nó hành xử sai khác với những gì người dùng có thể mong đợi hoặc đưa ra ví dụ về cách viết lại những trường hợp đó.
Tuy nhiên, những gì họ làm là liên kết đến bài viết này , đưa ra một lời giải thích thô sơ rằng một định if
hướng trong một định location
hướng tạo ra một "giả location
" khác, mà bỏ qua các location
khối khác .
Tuy nhiên, các ví dụ có vẻ phản trực giác với tôi, ngay cả với lời giải thích. Như vậy, tôi muốn biết liệu cấu hình cụ thể của tôi có an toàn không, và nếu không, làm thế nào nó có thể được viết lại tốt hơn. Tôi đã làm thử nghiệm của riêng tôi tất nhiên và nó dường như hành xử chính xác. Ví dụ sau đây chỉ là đoạn có liên quan của tệp cấu hình:
ssl_client_verify optional;
location /public {
try_files $uri $uri/ =404;
}
location / {
if ($ssl_client_verify != SUCCESS)
{
return 403;
}
try_files $uri $uri/ =404;
}
Mối quan tâm bảo mật chính của tôi là tôi muốn tránh tiết lộ bất kỳ nội dung nào không có trong /public
bất kỳ ai không có chứng chỉ hợp lệ.