Cách tốt nhất để gỡ lỗi tập tin cấu hình nginx?


37

Tôi có một loạt các quy tắc viết lại mà tôi phải chuyển từ apache sang nginx.

Đó là một quá trình khá đau đớn bởi vì tôi không thể biết liệu các quy tắc viết lại của mình và các điều kiện "nếu" có hoạt động như tôi muốn không.

Apache đã gỡ lỗi cho mô-đun viết lại của nó. Tôi có thể làm gì cho nginx?

Câu trả lời:


37

Cho phép rewrite_log:

rewrite_log on;

và thiết lập mức gỡ lỗi trong error_logchỉ thị:

error_log /var/log/nginx/localhost.error_log notice;

rất gần với Apache;) Tôi chắc chắn phải xem nginx
Olivier Pons

Lưu ý rằng điều này có thể được sử dụng cho nhiều hơn là gỡ lỗi viết lại. Bạn có thể thêm "viết lại DEBUG DEBUG break;" bất cứ nơi nào bạn thích trong cấu hình nginx và xem khi nào nó bị tấn công. Dòng ghi lại này thực sự không có gì (nếu vị trí "DEBUG" được khớp, thay thế nó bằng "DEBUG") ngoài việc kích hoạt một dòng được ghi lại. Về mặt kỹ thuật, bạn thậm chí có thể xuất các biến như thế này: "viết lại. * $ Yêu cầu ngắt;" hoặc viết lại. * "'$ http_x_forwarded_for' $ request" break; - mặc dù điều này gây ra yêu cầu thất bại. Sẽ tốt hơn nếu thêm biến vào định dạng nhật ký tùy chỉnh cho access_log.
Curtis Yallop

14

Bật hỗ trợ gỡ lỗi , sau đó đặt mức gỡ lỗi trong error_log.

error_log   /var/log/nginx/error.log debug;

Bây giờ bạn có thể theo dõi nhật ký và gửi yêu cầu của bạn thông qua. Có thể có nhiều chi tiết hơn bạn muốn, nhưng đôi khi có thể là cứu cánh.

Ồ, và bạn nên biết rằng nếu là xấu xa , trong bối cảnh địa điểm ít nhất là ...


3
noticetốt hơn nhiều so debugvới việc error_levelgỡ lỗi viết lại bởi vì nó sẽ bỏ qua rất nhiều thông tin gỡ lỗi không liên quan ở mức độ thấp (ví dụ: chi tiết SSL hoặc gzip; hơn 50 dòng trên mỗi yêu cầu).
Dan Dascalescu

1

Sử dụng nhật ký và hỗ trợ tích hợp để gỡ lỗi chắc chắn là cách hợp lý nhất. Nếu bạn đang thực hiện một số gỡ lỗi định tuyến nhanh ở giai đoạn đầu và chỉ muốn tương tác thông qua trình duyệt / máy khách, sử dụng "văn bản" trả về 4xx; Chỉ thị cũng có thể cung cấp cho bạn câu trả lời bạn muốn với rất ít nỗ lực. Ví dụ,

http {
  server {
    listen 80;
    server_name mydomain.net;
    return 404 "mydomain 80 route";
  }

  server {
    listen 80 default_server;
    return 404 "default 80 route";
  }
}

Văn bản trong trang web được trả lại sẽ cho bạn biết serverkhối yêu cầu của bạn được kích hoạt.

Hi vọng điêu nay co ich!
Andres

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.