Nginx không tải lại - làm thế nào để theo dõi tại sao?


96

Xin chào Tôi đã có máy chủ Nginx của tôi chạy tốt trên máy chủ Ubuntu 12.04 trong một thời gian.

Tôi đã dần dần tạo ra các bit khác nhau và đã tối ưu hóa thời gian tải trên trang wordpress của mình.

Sau khi thực hiện một vài thay đổi đối với tệp máy chủ của mình, tôi quyết định:

sudo /etc/init.d/nginx reload

Tôi nhận được:

  • Đang tải lại cấu hình nginx nginx [fail]

Không có thông tin bổ sung hoặc lý luận được đưa ra. Làm cách nào tôi có thể khởi động lại máy chủ của mình để nó in bất kỳ báo cáo lỗi nào trong khi tải lại để tôi có thể bắt đầu theo dõi lỗi.

Đối với một câu hỏi tiền thưởng:

Đối với các hệ thống Nginx đó, khi bạn đã thực hiện một loạt các thay đổi đối với máy chủ và bắt đầu với một số bit khác và đột nhiên máy chủ nginx của bạn sẽ không tải lại (tình cờ mọi thứ dường như vẫn đang chạy!) Làm thế nào để bạn bắt đầu cách tiếp cận cách ly Tại sao hoặc bắt đầu phá vỡ mọi thứ để gỡ lỗi!


4
Kiểm tra cú pháp của bạn với sudo nginx -t(hoặc sudo nginx -p /etc/nginx -c nginx.confnơi /etc/nginxlà tiền tố cấu hình của bạn và nginx.confcác tập tin cấu hình chính).
Lekensteyn

sudo nginx -s tải lại dường như cũng cho tôi đọc!
Huw

Câu trả lời:


145

Kiểm tra syslog (/ var / log / syslog) để biết thông báo về các sự cố tệp cấu hình.

Từ dòng lệnh bạn có thể chạy:

nginx -c /etc/nginx/nginx.conf -t

để có nginx kiểm tra cấu hình của bạn cho các lỗi.


à ha rất hữu ích Tôi dường như đang nhận được: vị trí "/ blog / wp-admin" ở bên ngoài vị trí "/blog/.*\.php$" trong /etc/nginx/site-configs/wordpress.conf:1 ... thú vị , cho tôi một cái gì đó để tiếp tục!
Huw

2
ARGH! Ba giờ tìm kiếm và hóa ra tôi đã bỏ lỡ một; Cảm ơn tất cả sự giúp đỡ, đã chứng minh thiết yếu trong việc theo dõi nó xuống. Ngẫu nhiên nếu có ai từng kết thúc câu hỏi này sau khi theo dõi các bài đăng trên web của Ars Technica. Tôi nghĩ rằng tôi đã trải qua chúng với một chiếc lược răng tốt!
Huw

4
chạy lệnh này mang lại cho tôi nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successfulvà tôi vẫn không thể bắt đầu nginx
Bill Garrison

1
@BillGarrison kiểm tra syslog và nhật ký lỗi nginx để biết thêm thông tin
Dlloyd

44

Chạy lệnh này bạn có thể tìm thấy vấn đề.

sudo nginx -t

7

Bạn có thể nên kiểm tra lỗi trong /var/log/nginx/error.log.

Trong trường hợp của tôi, tôi đã không thêm cổng cho ipv6. Bạn cũng nên làm điều này (trong trường hợp bạn đang chạy nginx trên một cổng khác ngoài 80): listen [::]:8000 default_server ipv6only=on;


1
Lưu ý: nếu quyền của bạn bị sai /var/log/nginx/error.log, nginx sẽ không thể viết lỗi cho nó và sẽ thất bại trong âm thầm. Kiểm tra cấu hình của bạn như trong câu trả lời được chấp nhận ( nginx -c /etc/nginx/nginx.conf -t) sẽ giúp ích.
dùng898763452

5

Tôi đã chạy các lệnh này để có được nginx sao lưu và làm việc:

# remove nginx conf files
apt-get purge nginx

# reinstall
apt-get install nginx

# make sure the default site is enabled
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

# start nginx
sudo /etc/init.d/nginx start 

nginx hiện đang hoạt động !!


2
Bạn không phải loại bỏ và thanh lọc, chỉ cần thanh lọc. Và thật khó để biết đây có phải là câu trả lời cho câu hỏi vì thanh lọc sẽ xóa tất cả các tệp cấu hình.
Panther

1
Lý tưởng nhất - và đối với những người dùng khác, tôi muốn có được số lượng đọc tối đa khi xảy ra lỗi và sửa chữa cài đặt hiện tại của tôi thay vì thanh trừng và bắt đầu lại từ đầu
Huw

1
@ bodhi.zazen Tôi đã sửa câu trả lời của mình. Và như những gì "Huw" đã nói, tôi đồng ý. Chỉ là tôi đã bắt đầu cài đặt và thiết lập nginxnên việc gỡ bỏ nó và bắt đầu lại thay vì tìm ra lỗi không phải là vấn đề lớn. Cảm ơn cả hai vì sự hiểu biết của bạn.
Aaron Lelevier

trong trường hợp của tôi, tôi chỉ phải bắt đầu sử dụng lệnh này sudo /etc/init.d/nginx start
Mã Sizzling

3

Kiểm tra /etc/nginx/sites-available/defaulthoặc bất kỳ bản sao nào của nó mà bạn đang sử dụng và đảm bảo rằng bạn không ghi chú (xóa #) bất kỳ thứ gì }bạn có thể cần liên quan đến {khả năng đó không bị thiếu. Đó là vấn đề của tôi.


2

Cần thanh lọc nginx sau đó gõ vào dòng lệnh:

ln -s /etc/nginx/sites-availbale/default .etc/nginx/sites-enabled/default

Ý bạn là apt-get purgesao
RolandiXor

2

thực hiện mở lại tất cả các tệp, sử dụng

nginx -s reopen

sau đó sử dụng

nginx -s reload

Vì nginx trợ giúp cho thấy rằng nó sẽ, tải lại nginx bằng cách gửi tín hiệu đến master process.it sẽ hoạt động.

Yêu cầu: vui lòng không cung cấp purgecác lệnh mà không cần thận trọng, vì nó có thể gây ra sự cố cho người mới bắt đầu (tất cả các cấu hình sẽ bị mất) .... Một rắc rối LỚN.


1

Nếu nó mang lại cho bạn những lỗi như vậy, bạn có thể kiểm tra journalctl -xe.
Nó có rất nhiều thông tin về những gì đã xảy ra trong một vấn đề hệ thống hoạt động.
bạn có thể tìm thấy dòng hoặc đơn giản là journalctl -xe | grep nginxđể tìm những gì đã xảy ra với nginx khi nó cố gắng tự chạy.

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.