Nginx dừng / tải lại trên windows không thành công cho Access bị từ chối


11

Tôi đang chạy nginx trên Windows Server 2008 R2 (x64) dưới dạng dịch vụ windows. Tôi đang sử dụng Windows Service Wrapper cho điều đó. (Trên thực tế, tôi đã làm theo hướng dẫn này: http://mercurial.selenic.com/wiki/HgServeNginxWindows .)

Dịch vụ đang chạy ok. Tuy nhiên, máy chủ không xử lý tín hiệu (ví dụ: dừng / tải lại).

Điều này có nghĩa là nếu tôi dừng dịch vụ, nginx sẽ không dừng lại. (Tôi phải giết nó.)

Và khi tôi muốn tải lại cấu hình từ dòng lệnh:

C:\Users\Administrator>E:\apath\nginx\nginx.exe -p E:\apath\nginx -c E:\apath\nginx.conf -s reload

Nó xuất ra:

nginx: [error] OpenEvent("Global\ngx_reload_4268") failed (5: Access is denied)

Tôi đang chạy lệnh với tư cách quản trị viên và dịch vụ đang chạy dưới người dùng DỊCH VỤ MẠNG.

Bất kỳ gợi ý hoặc vấn đề tương tự?


Một dấu vết ProcMon sẽ có thể giúp xác định vấn đề. Nếu bạn có thể tải xuống ứng dụng Trình theo dõi tiến trình , hãy chạy nó, bắt đầu theo dõi, lặp lại các bước bạn đã thực hiện trước đó (để bạn tái tạo lỗi Truy cập bị từ chối ), dừng theo dõi, lưu dưới dạng tệp PML ( Tất cả sự kiện ) và chia sẻ tệp với chúng tôi, chúng tôi có thể cung cấp giải pháp.
Tomas Dabasinskas

Câu trả lời:


1

Tôi chạy dịch vụ nginx của mình trong HỆ THỐNG ĐỊA PHƯƠNG và tôi sử dụng cấu hình xml sau:

<service>
      <id>nginx-service</id>
      <name>nginx-service</name>
      <description>nginx-service</description>
      <executable>c:\nginx\nginx.exe</executable>
      <logpath>c:\nginx\</logpath>
      <logmode>roll</logmode>
      <depend></depend>
      <startargument>-pc:\nginx</startargument>
      <stopexecutable>c:\nginx\nginx.exe</stopexecutable>
      <stopargument>-s</stopargument>
      <stopargument>stop</stopargument>
  </service>

Tôi đang sử dụng Windows Service Wrapper 1.18 và cấu hình này hoạt động với tôi. Các quy trình Nginx nên được dừng lại một cách duyên dáng. Chúc may mắn.


Tìm xml này ở đâu? Bối cảnh rất quan trọng!
Roel


0

để nó hoạt động với tôi trên Windows 10 với nginx 1.9.15 tôi đã phải thêm

-p c:\nginx 

trong các đối số dừng

<service>
  <id>nginx</id>
  <name>nginx</name>
  <description>nginx</description>
  <executable>c:\nginx\nginx.exe</executable>
  <logpath>c:\nginx\</logpath>
  <logmode>roll</logmode>
  <depend></depend>
  <startargument>-p</startargument>
  <startargument>c:\nginx</startargument>

  <stopexecutable>c:\nginx\nginx.exe</stopexecutable>
  <stopargument>-p</stopargument>
  <stopargument>c:\nginx</stopargument>
  <stopargument>-s</stopargument>
  <stopargument>stop</stopargument>
</service>

0

Bạn phải chạy reloadtừ cùng một tài khoản với dịch vụ chạy. Ví dụ: nếu bạn chạy nginx của mình dưới dạng HỆ THỐNG, thì bạn có thể sử dụng psexeccông cụ:

PSEXEC -s c:\nginx\nginx.exe -p c:\nginx -s reload


0
  1. Mở cmdvới tư cách Quản trị viên .
  2. Sau đó cdđến thư mục chứa nginx và sau đó chạy các lệnh:

cmd (với tư cách Quản trị viên)

cd E:\apath\nginx\nginx.exe
nginx -s reload
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.