Làm thế nào để vô hiệu hóa đăng nhập Nginx?


27

Tôi có tập tin cấu hình sau

server {
    listen       80;
    server_name  _;
    access_log  /var/log/nginx/access.log  main;
  ...

server {
    listen       80;
    server_name  example.com
    access_log  off;
    error_log off;

Nhưng nó vẫn tiếp tục đăng nhập cho example.commáy chủ ảo. Tôi đang làm gì sai?


Bạn dự định "chính" sẽ làm gì ở đây?
Evan Carroll

Tôi đã gắn cờ câu hỏi này để xóa, vì câu trả lời được đánh giá cao nhất có liên quan đến lỗi cú pháp của bạn. Nó không có gì để làm với việc tắt đăng nhập lỗi. Nó không có thông báo lỗi có thể tìm kiếm và tôi không chắc bạn đang hỏi gì hoặc tại sao câu trả lời được cung cấp không giải quyết được vấn đề của bạn.
Evan Carroll

Câu trả lời:


31

Bạn đang thiếu ;sau chỉ thị server_name. access_logoffđang được coi là server_names bổ sung.


12
Ngoài ra, error_log tắt; không tắt đăng nhập lỗi. Nó chỉ ghi lại lỗi vào một tệp có tên 'tắt'. Không có cách nào để vô hiệu hóa hoàn toàn việc ghi nhật ký lỗi, gần nhất bạn có thể nhận được là error_log / dev / null crit; Điều này gần như giống nhau, vì không có nhật ký lỗi sẽ xuất hiện.
kolbyjack

6
Trên thực tế, làm access_log off;cho nginx ghi nhật ký vào tệp được gọi off. Vì vậy, đây không phải là câu trả lời đúng.
user965363

4
Trên thực tế, đây là câu trả lời đúng. "Sử dụng" tắt "làm tham số duy nhất xóa tất cả các chỉ thị access_log cho cấp độ hiện tại": wiki.nginx.org/HttpLogModule#access_log . Điều này không đúng với error_log (như được thêm bởi @kolbyjack), nhưng tôi tin rằng câu hỏi là về quyền truy cập, không phải là nhật ký lỗi. Có thể một số phiên bản nginx rất cũ không hỗ trợ điều này.
rvs

Có một lợi thế để sử dụng offthay vì /dev/null? Nếu offgây ra một số phiên bản của Nginx ghi vào một tệp có tên off, thì /dev/nullcó vẻ như là một giải pháp phổ quát hơn.
Joe Mornin

20

Tất nhiên bạn có thể hoàn toàn vô hiệu hóa đăng nhập. Chỉ cần trỏ các logfiles đến / dev / null và được thực hiện. ;)

access_log  /dev/null;
error_log /dev/null;

3
Tôi cũng dùng cái này; /dev/nulllà một điểm đến thực sự; trong khi "tắt" là một tệp trong một số thư mục
edoceo

4
Đây không phải là cách chính thức đề nghị để làm điều đó. Sử dụng 'tắt' là cách chính xác.
dùng1751825

Tôi đã tạo nó / var / null và bây giờ nó bắt đầu lưu nhật ký trong tệp có tên "null" trong thư mục var. Chỉ nên là "/ dev / null"?
Gaurav

13

bạn có thể vô hiệu hóa access_logbằng cách sử dụng

access_log off;

nhưng nếu bạn muốn tắt error_log, chỉ cần không sử dụng tùy chọn error_log trong conf của bạn.


2
Làm thế nào là thêm vào các câu trả lời trước đó?
Dave M

1
Vì, câu trả lời trước là không đáng tin! Đừng sử dụng cái đó
Mustafa zgür

2
Nếu cấu hình không chứa tùy chọn error_log nginx mặc định là "error_log log / error.log error": nginx.org/en/docs/ngx_core_module.html#error_log
Julian Ladisch

vâng, đúng vậy. Vì vậy, chúng ta nên / dev / null hoặc cái gì khác? đề nghị của bạn là gì?
Mustafa zgür

Câu trả lời này là sai vì điều này sẽ tạo ra một tệp nhật ký '/ usr / share / nginx / off'
DanielKhan

1

Nó khá đơn giản, bạn có thể nhận xét các dòng nhật ký

server {
    listen       80;
    server_name  _;
    #access_log  /var/log/nginx/access.log  main;
  ...

server {
    listen       80;
    server_name  example.com
    #access_log  off;
    #error_log off;

và nếu bạn nhận được một lỗi crit, bạn nên làm như thế này: errerrerror_log / dev / null crit; vì vậy nó sẽ là:

server {
    listen       80;
    server_name  _;
    access_log  /dev/null crit;
  ...

server {
    listen       80;
    server_name  example.com
    access_log  /dev/null crit;
    error_log /dev/null crit;

Đừng sử dụng 'tắt'. Như được đề cập dưới đây, điều này sẽ tạo ra một tệp nhật ký gọi là 'tắt' trong thư mục nhà của nginx.
DanielKhan

0

Dựa trên việc ghi nhật ký có điều kiện trong bài đăng Nginx nhưng thay vì sử dụng biến để xác định khi đăng nhập yêu cầu, chỉ cần sử dụng giá trị không đổi là 0.

server {
listen       80;
server_name  _;
access_log  /var/log/nginx/access.log  main;
}

server {
listen       80;
server_name  example.com
access_log  /var/log/nginx/access.log if=0;
error_log /var/log/nginx/error.log if=0;
}
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.