Xác định vị trí tệp nginx.conf mà nginx của tôi thực sự đang sử dụng


130

Làm việc trên máy chủ của khách hàng nơi có hai phiên bản nginx khác nhau được cài đặt. Tôi nghĩ rằng một trong số chúng đã được cài đặt với trình quản lý gói brew (hộp osx) và cái còn lại dường như đã được biên dịch và cài đặt với Makefile đóng gói nginx. Tôi đã tìm kiếm tất cả các tệp nginx.conf trên máy chủ, nhưng không có tệp nào trong số này xác định các tham số mà nginx thực sự đang sử dụng khi tôi khởi động nó trên máy chủ. Tệp nginx.conf mà tôi không biết ở đâu?

Câu trả lời:


244

Chạy nginx -tqua dòng lệnh của bạn sẽ đưa ra một bài kiểm tra và nối đầu ra với filepath vào tệp cấu hình (có lỗi hoặc thông báo thành công).


33
% ps -o args -C nginx
COMMAND
build/sbin/nginx -c ../test.conf

Nếu nginx được chạy mà không có -ctùy chọn, thì bạn có thể sử dụng -Vtùy chọn để tìm ra các đối số cấu hình được đặt thành giá trị không chuẩn. Trong số đó thú vị nhất đối với bạn là:

--prefix=PATH                      set installation prefix
--sbin-path=PATH                   set nginx binary pathname
--conf-path=PATH                   set nginx.conf pathname

1
Tôi đã cố chạy các lệnh nhưng chúng không hoạt động với tôi ..
Anwer

32

Cả hai nginx -tnginx -Vsẽ in ra đường dẫn tập tin cấu hình nginx mặc định.

$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

$ nginx -V
nginx version: nginx/1.11.1
built by gcc 4.9.2 (Debian 4.9.2-10)
built with OpenSSL 1.0.1k 8 Jan 2015
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf ...

Nếu bạn muốn, bạn có thể lấy tệp cấu hình bằng cách:

$ nginx -V 2>&1 | grep -o '\-\-conf-path=\(.*conf\)' | cut -d '=' -f2
/etc/nginx/nginx.conf

Ngay cả khi bạn đã tải một số tệp cấu hình khác, chúng vẫn sẽ in ra giá trị mặc định.


ps aux sẽ cho bạn thấy tập tin cấu hình nginx được tải hiện tại.

$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        11  0.0  0.2  31720  2212 ?        Ss   Jul23   0:00 nginx: master process nginx -c /app/nginx.conf

Vì vậy, ví dụ bạn có thể lấy tệp cấu hình:

$ ps aux | grep "[c]onf" | awk '{print $(NF)}'
/app/nginx.conf

7
which nginx

sẽ cung cấp cho bạn đường dẫn của nginx đang được sử dụng


EDIT (2017-ngày 18 tháng 1)

Nhờ nhận xét của Will Palmer về câu trả lời này, tôi đã thêm vào ...

Nếu bạn đã cài đặt nginx thông qua trình quản lý gói như HomeBrew ...

which nginx

có thể không cung cấp cho bạn đường dẫn CHÍNH XÁC đến nginx đang được sử dụng. Tuy nhiên bạn có thể tìm thấy nó bằng cách sử dụng

realpath $(which nginx)

và như được đề cập bởi @Daniel Li

bạn có thể lấy cấu hình của nginx thông qua phương thức của anh ấy

Ngoài ra, bạn có thể sử dụng này:

nginx -V

1
"Mà" hoạt động trên hầu hết các hệ thống dựa trên Unix. Tôi chỉ cần gõ nó trên Ubuntu để đảm bảo rằng tôi đã không mất trí.
tqwhite

1
oh wow, tôi đứng chính xác. Sửa đổi câu trả lời ngay lập tức. cảm ơn
Craig Wayne

1
which nginxchỉ hiển thị đường dẫn mặc định cho nginx cho người dùng hiện tại (thậm chí không phải người dùng hiện tại - trình bao hiện tại ). Nó chắc chắn không hiển thị đường dẫn mà nginx "đang được sử dụng".
Will Palmer

2

Tất cả các câu trả lời khác đều hữu ích nhưng chúng có thể không giúp bạn trong trường hợp nginxkhông bật PATHnên bạn sẽ nhận được command not foundkhi cố gắng chạynginx :

Tôi có nginx 1.2.1 trên Debian 7 Wheezy, nginxtệp thực thi không bật PATH, vì vậy tôi cần xác định vị trí trước. Nó đã chạy, vì vậy sử dụng ps aux | grep nginxtôi đã phát hiện ra rằng nó nằm trên /usr/sbin/nginxđó, do đó tôi cần phải chạy/usr/sbin/nginx -t .

Nếu bạn muốn sử dụng tệp cấu hình không mặc định (nghĩa là không /etc/nginx/nginx.conf), hãy chạy nó với -ctham số : /usr/sbin/nginx -c <path-to-configuration> -t.

Bạn cũng có thể cần phải chạy nóroot , nếu không nginx có thể không có quyền để mở ví dụ nhật ký, vì vậy lệnh sẽ thất bại.


1

Ngoài câu trả lời của @Daniel Li, cài đặt nginx với Valet cũng sẽ sử dụng cấu hình Velet, điều này được tìm thấy trong "/usr/local/etc/nginx/valet/valet.conf". Tệp nginx.conf sẽ nhập tệp conf Valet này. Các cài đặt bạn cần có thể nằm trong tệp Valet.

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.