Điểm:0

nginx regex viết lại không hoạt động cho tập lệnh php

lá cờ cn

Tôi đang cố gắng chặn thực thi tập lệnh PHP trong một vài thư mục để cài đặt WordPress nhưng Nginx đang gây khó khăn cho tôi.

vị trí = /wp/wp-gồm/category.php {
    Phủ nhận tất cả;
}

Tôi có thể chặn từng tập lệnh riêng lẻ bằng cách sử dụng đối sánh chính xác nhưng khi tôi sử dụng biểu thức chính quy thì nó không hoạt động.

vị trí ~* /wp/wp-gồm/.*\.php$ {
    Phủ nhận tất cả;
}

Tôi không chắc mình đang làm gì sai?

CHỈNH SỬA

Tôi có các quy tắc sau sau các quy tắc trên:

địa điểm / {
    error_page 418 = @cachemiss;
    # Để cho phép POST trên các trang tĩnh. Sẽ tìm kiếm với lỗi của tôi
    error_page 405 =200 $uri;
    đệ quy_error_pages trên;

    # bỏ qua bộ đệm cho các chuỗi truy vấn phổ biến
  nếu ($arg_s != "") { return 418; } # truy vấn tìm kiếm
  nếu ($arg_p != "") { return 418; } # yêu cầu bài đăng / trang theo ID
  if ($arg_amp != "") { return 418; } # kiểm tra amp
  nếu ($arg_preview = "true") { return 418; } # xem trước bài đăng / trang

  if ($http_cookie ~* "(wordpress_logged_in_|wp\-postpass_|woocommerce_items_in_cart|woocommerce_cart_hash|wptouch_switch_toogle|comment_author_|comment_author_email_)") {
    trả lại 418;
  }
  # bằng cách vượt qua bộ nhớ đệm cho các yêu cầu bài đăng
  nếu ($request_method = POST) {
    trả lại 418;
  }

  nếu (!-f "$rocket_file") {
    trả lại 418;
  }

  gắn thẻ vào;
  try_files "$rocket_url" $uri $uri/ /index.php$is_args$args;
}


vị trí @cachemiss {
  try_files $uri $uri/ /index.php$is_args$args;
}
lá cờ us
Vui lòng hiển thị đầu ra của `nginx -T` để chúng tôi có thể xem cấu hình nginx đầy đủ.
Ivan Shatsky avatar
lá cờ gr
@Maximus Các vị trí phù hợp với Regex được kiểm tra từ đầu đến cuối. Vị trí phù hợp đầu tiên được chọn để xử lý yêu cầu. Việc có vị trí đó __after__ trình xử lý `location ~ \.php$ { ... }` PHP thông thường sẽ khiến nó không thể truy cập được - bạn cần đặt nó __before__ trình xử lý PHP mặc định. Mặt khác, các vị trí khớp chính xác (`location = { ... }`) có mức độ ưu tiên cao hơn bất kỳ loại vị trí nào khác, vì vậy, vị trí đầu tiên của bạn sẽ hoạt động bất kể vị trí đó được đặt ở đâu.
lá cờ cn
@IvanShatsky Tôi có vị trí này ở đầu tệp và sau đó là quy tắc viết lại wordpress.
Ivan Shatsky avatar
lá cờ gr
@Maximus Bạn có ý nghĩa gì với "quy tắc viết lại wordpress"?
lá cờ cn
@IvanShatsky Tôi vừa cập nhật câu hỏi của mình. Cảm ơn bạn đã giúp đỡ.
Ivan Shatsky avatar
lá cờ gr
@Maximus Tôi không thấy bất cứ điều gì có thể là nguyên nhân, nhưng tôi cũng không thấy trình xử lý PHP (thường là `location ~ \.php$ { ... }` hoặc thứ gì đó tương tự). Bạn có chắc chắn rằng nó nằm bên dưới đoạn cấu hình đã cho, không phải bên trên nó không?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.