找回密码
 立即注册
查看: 2496|回复: 9

Nginx启动,重启以及基本命令

[复制链接]

353

主题

570

回帖

3735

积分

管理员

积分
3735
QQ
发表于 2023-5-23 17:31:14 | 显示全部楼层 |阅读模式
1.启动nginx
! |2 K3 E% P* a* I进入nginx安装目录执行* D8 k# }. t, K3 S( [' }

. C* d8 h7 P( a5 T./sbin/nginx -c ./conf/nginx.conf
, i6 A$ S  h% W+ q1 d 2.验证nginx配置文件是否正确2 x) T! }$ |7 }/ f3 p  H' J1 B
, W7 X# I4 m/ M1 `% h4 P( K
方法1. 进入nginx安装目录sbin下,输入命令! D. ~; V, J7 O
, e- z% f) z( O
./nginx -t
3 S3 w: B( w9 f7 u& Y  l% [回显test is successful说明配置正确( [7 q5 P. j7 r6 u" Z6 |# b) B8 g
! Q, x6 E; w/ X5 t9 t
方法2. 在启动nginx命令 -c 前加 -t
- i$ J5 {" b1 Y- K
/ J- x  E$ U5 _0 t  `( k' H./sbin/nginx -t -c ./conf/nginx.conf8 o. j8 O' ^7 r" I9 Q
3.停止nginx( k- C' P+ n! m7 ~5 T/ r. A
方法1:2 ]4 i. ]7 N- H

* n* {3 I1 J( \7 |7 T7 I) _强制停止:' o$ m: K$ X0 _2 n' e- R

) [9 \: _  J2 O./sbin/nginx -s stop
6 Q2 L2 _, X& p' N7 ~4 x处理完请求后停止:
- W8 u' Z8 f9 l) V$ U
: F4 Z- |: F9 {/ o./sbin/nginx -s quit1 x& T6 j2 S! e/ w4 m+ s3 @
方法2:
4 D% j9 l; V, _' @) q' J7 X9 J+ q  k% ^3 W4 s
ps -ef|grep nginx/ q" p: v2 `7 m* K1 H! q
找到对应的nginx进程号
2 V" S9 ^1 z! t* ?, i4 u
9 T0 i" b5 \* ?3 Z1 X正常停止:
1 E! r' D! [+ q+ c7 f6 v7 p- Q
* ]1 _+ z$ \. |' ?: |- r, Ckill -15 进程号
1 _+ k% b: A! u2 q5 g强制停止:
* \3 \# |: [- A+ z9 `; U0 ]. L& W1 g6 \" ?+ B* e
kill -9 进程号
9 |: O: [) c& k: q- ~. {4.重启新加载nginx配置文件
7 q2 E9 S  a) F8 q7 @* q方法1. 进入nginx安装目录执行
  G$ r, b$ _2 c: p+ P+ {" y  t3 O! O) j5 Q
./sbin/nginx -s reload7 g4 }! H% l7 E4 S' N' Q
5.重启nginx服务
, V( D8 Q, g' `' Q/ x$ c5 ~" x: S2 y方法1. 进入nginx安装目录执行' U0 {) a% M3 ]
5 C: D, G: ?0 G& s! d3 c, Z% s  v
./sbin/nginx -s reopen6 l- I: d2 h" V2 J% b9 w
方法2.查找当前nginx的PID进程号,并kill( [& e- P- W0 s2 ]- w

; ^5 H  V0 ]& K- ~# o, i8 ~6 }ps -ef|grep nginx& B& d- X& o( {
找到对应的nginx进程号,进行
3 R% i# F, A( ?9 E7 V& I- g+ G
* l4 `4 }* d+ J6 p$ jkill -HUP 进程号
$ F' c7 [/ `) C( e( P3 Y! l& x1 L  |# ^  D" j( C. \

8 }1 Z! G, c. e3 a7 V" E; rkill -1 进程号5 H/ {- O1 K, R
实现重启nginx服务
& f0 c9 `* X. M% g
: A/ r/ z+ e  w$ L- i 6.查看nginx版本信息' j# _: d8 Y: H8 O
1).只显示版本信息/ O2 r$ e' ^0 e/ U$ ~# E* b5 Q

& E; O0 a& Y  G9 \* ]& T8 ^1 s) ?进入nginx安装目录执行4 I3 M4 L" @* D0 E- \: ~9 h

  q7 g0 _: c* C' p5 R./sbin/nginx -v4 Y: ?: ]+ a! r4 @8 z5 u2 ^0 i
2)显示版本信息和配置信息* v% i1 E+ n4 F$ u( `* r- P

; K, E1 [8 L0 S/ R1 m( o9 s进入nginx安装目录执行4 W& d, }/ C5 }7 M
# v: z1 H& k4 J8 ~9 W
./sbin/nginx -v
回复

使用道具 举报

353

主题

570

回帖

3735

积分

管理员

积分
3735
QQ
 楼主| 发表于 2023-5-23 17:32:35 | 显示全部楼层
#启动
: f3 D, m4 ]: q, n1 Q. l  g#1.直接启动
! F- u, K6 o7 V, u: W$ H#进入nginx目录,执行启动命令5 K( s# o' w9 m9 p  N
cd /usr/local/nginx/sbin( q9 F4 x9 i% S4 O8 x+ [
./nginx
( c% J. ?4 l5 M8 k' ], [# 或者直接) ]8 m& I2 ]1 r0 Y, G
/usr/local/nginx/sbin/nginx
2 a1 e! o3 s& s7 \" o6 I) x#2.指定配置文件方式启动
7 ^# T) R- }6 Z, s% {% [: P8 B#进入nginx目录,执行启动命令6 x! r4 Y/ q( v( e6 k) ?
cd /usr/local/nginx/sbin& ]4 c, ?$ T% U6 `
./nginx -c /usr/local/nginx/conf/nginx.conf1 ^8 ]8 k. d9 `9 q& y7 j  \
#或者/ E: o. ?, g' v6 C) {2 i
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf  B: W8 m  D0 ~1 D5 t& y. d
回复

使用道具 举报

353

主题

570

回帖

3735

积分

管理员

积分
3735
QQ
 楼主| 发表于 2023-5-23 17:33:07 | 显示全部楼层
检查ngnix配置文件+ s& M! c9 X7 f7 Q

( f( e, X/ I3 g, }5 W#进入nginx目录' i0 t# G* c, _: Y3 g. {3 B! ^
cd /usr/local/nginx/sbin. y3 ~5 ~. \( }" Y
#检查配置文件是否有语法操作8 Q$ }7 M  v! |; f
./nginx -t2 P. a5 S6 H9 X+ I, m$ I) X) e
# 或者显示指定配置文件
# T2 c4 B$ Z! q5 W' ]8 y$ t7 Y./nginx -t -c /usr/local/nginx/conf/nginx.conf
8 r/ h7 m' q& L5 O# F
回复

使用道具 举报

353

主题

570

回帖

3735

积分

管理员

积分
3735
QQ
 楼主| 发表于 2023-5-23 17:33:51 | 显示全部楼层
平滑的重启,修改配置后,重新加载配置% j  ~! y8 G, K. ]6 V1 Y
- F7 t5 A) L4 b8 P
#进入nginx目录
3 S! B3 L2 V/ h* M$ [+ T1 m9 ccd /usr/local/nginx/sbin
  A9 _, E3 P# T4 H#执行重载命令7 d+ ^/ N' ^% }5 X9 q2 g
./nginx -s reload7 ~% [# R& u: Q0 X
5 i, W+ |4 }3 c6 D) v* K
nginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制。. V7 t: u' E; q$ i6 w
nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件- Y" g! h1 i6 x. f* O6 P

8 W9 y, s  P. P, TNginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
3 ^# L  M# j+ W$ Q" {. j/ \5 r# _Nginx启动新的worker进程,采用新的配置文件7 Z( b0 }2 U3 y, u# Y, T
Nginx将新的请求分配新的worker进程/ s" f$ ~- M7 `7 n+ O. U
Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程# k. z3 c3 U3 C0 H1 }5 ^" b
重复上面过程,知道全部旧的worker进程都被关闭掉。1 a0 X, h  _( o, A
所以,重启之后,master的进程号不变,worker的进程号会改变。
回复

使用道具 举报

353

主题

570

回帖

3735

积分

管理员

积分
3735
QQ
 楼主| 发表于 2023-5-23 17:34:10 | 显示全部楼层
关闭nginx
" D( ~9 }9 w* h; g. C; Z1 Z: q  {- {( _( w# a! J3 ?
#进入nginx目录1 L& t: d6 M. \( x9 w5 d& \9 N* X
cd /usr/local/nginx/sbin
8 P5 k7 Q5 j0 {' R: i3 W( L# 快速停止nginx( R' a0 q% }. M2 [+ E* A
./nginx -s stop% p9 x( g, a/ p6 ~  z- H+ z
# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx
% x# T' f4 q! s( r; Z./nginx -s quit
7 g9 @/ T1 d2 c1 I9 e. w! w
回复

使用道具 举报

353

主题

570

回帖

3735

积分

管理员

积分
3735
QQ
 楼主| 发表于 2023-5-23 17:34:32 | 显示全部楼层
reopen重新打开日志文件
6 L% t" N& D" Y& @8 v5 p; U- H& Q* k+ _- Y% l4 W
#进入nginx目录
  ]3 ?, }1 M: h4 B' Q2 Lcd /usr/local/nginx/sbin
# q) E$ L) w* X. Y6 w! j7 ?, G' _# 重新打开日志文件
( X+ K" }8 @) q* r./nginx -s reopen: M4 H/ \  N$ _4 ?1 R: W, G. C
回复

使用道具 举报

353

主题

570

回帖

3735

积分

管理员

积分
3735
QQ
 楼主| 发表于 2023-5-23 17:34:53 | 显示全部楼层
当需要切割 nginx 日志文件时,我们需要用到 nginx -s reopen 命令,用来完成新日志的生成。2 h* Y" q6 M0 U- O' c5 K0 ?: y' Q
当日志文件太大时,一般我们是按天切割文件,也就是按天做个分类,每天的日志放在一个文件中,并用日期命令,方便日后查找。
- S5 o" e  X8 ]8 O1 X但时我们简单的把文件移动并重新命令是无法及时生效的,因为在 linux 下的文件句柄,文件在被打开的情况下 mv 移走文件,操作这个文件的进程还是有这个文件的信息,原进程还是读写原来的文件,简单的 mv 无法生效也就无法完成我们想要的文件分隔。
9 E2 b& b" V7 F+ c+ D8 d8 e9 E一般我们需要两步:- B6 Z' z% q  K" ?' m& D& G
: a+ ^4 k7 Z, l2 E( h& q
移走文件并重命名
. w2 r( G( P; Y6 T& ^利用 nginx 的 reopen 功能,完成新日志文件的生成。
; U1 O1 A& [- @- G; G$ d; j参考地址,感谢博主分享
回复

使用道具 举报

353

主题

570

回帖

3735

积分

管理员

积分
3735
QQ
 楼主| 发表于 2023-5-23 17:35:39 | 显示全部楼层
其他命令重启、关闭nginx
+ y. U$ V3 `6 E$ }3 _# z' U2 M6 C2 T- t- s6 s
# 查看进程号,下图  master的为主进程号6 g% v  l2 h  c4 j4 F( K8 W2 p
ps -ef | grep nginx
# c, q+ ~! E. l( }8 p3 y#从容停止Nginx* j% P' n6 o# a' U3 R6 i1 s
kill -QUIT 主进程号
( h& `+ s; B( C3 B3 m#快速停止Nginx. M# q4 ~2 G& I. f( k2 W
kill -TERM 主进程号
7 I- [9 S! T0 P#强制停止Nginx  r4 x2 x) I( c$ c
pkill -9 nginx" f3 _- T& P% ]
#平滑重启nginx:  {' X! t; u. l& t& W: F" X
kill -HUP 主进程号0 E. m0 F& D4 L& |
回复

使用道具 举报

353

主题

570

回帖

3735

积分

管理员

积分
3735
QQ
 楼主| 发表于 2023-5-23 17:36:23 | 显示全部楼层

Windows下Nginx的启动、停止等命令

1、启动:8 a4 B0 Z% R/ N9 c

* L# x* B1 q4 ]. x" X- p. CC:\server\nginx-1.0.2>start nginx
) ^/ Z$ _0 b- C  j5 \/ b! u7 P$ k5 j& u; Y" d/ S  W1 W& @4 v

0 a) p, z! V7 t; t/ R  \* Z: m  \( e) h2 @  |- S9 m
C:\server\nginx-1.0.2>nginx.exe
& l- A: s- a  P: @5 F, W7 B; y; D2 I* x" o
注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。9 U8 U: C+ W" O7 H7 x; w9 F4 {
/ H4 w. [( ]" v  }  m! l* S  `- B
如果需要特殊设置nginx的配置文件路径,可以这样执行start nginx -c conf/nginx.conf5 ?9 d  }5 x3 K. [4 l

$ E. y4 z# }& ?7 C' Y2、停止:8 i3 j; h0 m& v4 D5 H
7 N# _& e+ B+ Z/ A6 V2 [) ?
C:\server\nginx-1.0.2>nginx.exe -s stop- G6 M$ Y7 ?7 l" |  t6 {

+ ~* I3 C+ S8 C' k6 [+ ?, X2 o0 T1 V
( S* n. c$ g1 l& U3 X, ]+ D
C:\server\nginx-1.0.2>nginx.exe -s quit
* `6 e7 s; i; T; V
# C5 n4 D) S8 r0 o' N/ f/ P! A注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。9 b7 B+ Q: j+ e0 ?; S+ y. n; p

( K7 G9 f$ K# Y6 x% C% x' n执行 nginx.exe -s stop或者quit命令是不是不能删除进程?查看进程开了一堆nignx.exe
4 Y! B4 h) V# E/ H& ]
" Z$ h7 K" T, L' {% B) Z7 c, x还有80端口在Listening,并且浏览器F5刷新还能访问页面,可能nginx.exe版本或系统的原因,用& W; j: \! h) r" N- u8 f7 O! [
' K% R# I/ G/ W' o6 B
taskkill /f /im nginx.exe > null 杀死nginx进程
  p6 n6 F& }/ T- }# i5 w. N  T5 ]6 q9 v7 c
3、重新载入Nginx:9 D2 T  k, F9 K8 @

) }- l, l' T8 Y2 Q) TC:\server\nginx-1.0.2>nginx.exe -s reload
2 T: S% h' w8 m; e3 R  e
0 w% a( m4 m0 p5 j4 y2 |+ _当配置信息修改,需要重新载入这些配置时使用此命令。: L) @7 a# A  x
6 \# f2 \3 X$ v+ p1 ?# E4 Z
4、重新打开日志文件:: p& `+ Y6 O" F9 a  a4 v2 x
# I7 C- ]! y9 Z. y/ U
C:\server\nginx-1.0.2>nginx.exe -s reopen
8 E. A* V/ p+ A9 x+ z5 @2 U! w9 ~) G4 U) V: T5 |* _: Z+ g9 S- ~
5、查看Nginx版本:
7 o2 x1 r, O' h; S3 Q2 [
6 ~' v+ E" d5 AC:\server\nginx-1.0.2>nginx -v
, A3 O) B" H/ H4 W: j  ?8 r) A9 `$ j  U9 W5 Z2 ^
nginx: nginx version: nginx/1.0.2# P/ d& q0 T/ y1 M4 c8 t

; H9 ^9 n2 m- F9 w& N
7 W7 o; b, e" }1 ^  r: h# }* O1 d$ B1 Q) X4 R$ |5 S5 O
C:\server\nginx-1.0.2>nginx -V
2 ], O3 h  K; i) o6 D9 z
* D8 g' S+ ?# N7 f9 Y7 D2 B8 Ynginx: nginx version: nginx/1.0.2
& H, ]* a  y) k, C% o: d
! ]+ H9 R  o2 j- @1 vnginx: TLS SNI support enabled, W! {% U: C% Z( z) u

- o: a- [) k! b* xnginx: configure arguments: --builddir=objs.msvc8 --crossbuild=win32 --with-debug --prefix= --conf-path=conf/nginx.conf --pid-path=logs/nginx.pid --http-log-path=logs/access.log --error-log-path=logs/error.log --sbin-path=nginx.exe --http-client-body-temp-path=temp/client_body_temp --http-proxy-temp-path=temp/proxy_temp --http-fastcgi-temp-path=temp/fastcgi_temp --with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=objs.msvc8/lib/pcre-7.9 --with-zlib=objs.msvc8/lib/zlib-1.2.3 --with-select_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_stub_status_module --with-http_flv_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-mail --with-ipv6 --with-openssl=objs.msvc8/lib/openssl-0.9.8r --with-openssl-opt=enable-tlsext --with-http_ssl_module --with-mail_ssl_module
1 I2 p: a: \' X' m+ E5 z
, ~# G2 K6 M7 @6 P( J注:v只是简单显示版本信息,V不但显示版本信息,还显示配置参数信息。8 P  @: m, G" M. C2 ]
. P- I. o% F& T. C: p9 ?
5 M) Y. z' ~  k+ }- q4 I7 {% a
6、测试或载入指定配置文件:
( [/ P+ {1 {6 w. |& M. O6 L0 V! y2 m4 E( X
注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:
- l7 l; }& R9 z' R
6 w: H. o* y* FC:\server\nginx-1.0.2>nginx.exe -t -c conf/default.conf
( P! ~/ y7 B1 i$ K+ M1 z6 ^9 [
& {2 ^( ]5 o) ynginx: the configuration file C:\server\nginx-1.0.2/conf/default.conf syntax isok
. W: V- m6 X6 F6 D$ }3 I: \+ ]5 M( T: n6 s! {0 k3 v! ~
nginx: configuration file C:\server\nginx-1.0.2/conf/default.conf test is successful
7 {0 I, C- ~  M2 h5 Y5 [
, P7 _; Y* c! O' L! h) j2 }载入指定配置文件
/ M/ D/ q( a. B% z9 g* d5 p3 W7 o1 d' W0 ^: {
C:\server\nginx-1.0.2>start nginx.exe -c conf/default.conf
' Z& _* z8 C0 j9 |2 ~1 D  J* l3 o0 F8 }8 b  ^. R2 q
回复

使用道具 举报

353

主题

570

回帖

3735

积分

管理员

积分
3735
QQ
 楼主| 发表于 2023-5-23 17:38:36 | 显示全部楼层
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程! e# E& k( R  V" j5 `# R: k
在nginx.exe目录,打开命令行工具,用命令 启动/关闭/重启nginx $ `$ A* t$ i, g) t; R
start nginx : 启动nginx- t! y1 L8 k- s# b! _9 F
nginx -s reload  :修改配置后重新加载生效
- b0 E. z; \. R+ E nginx -s reopen  :重新打开日志文件
: W' o+ v" n1 L$ @ nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确& I- `2 D: W0 S
       关闭nginx:, W3 S! I6 k  F+ c; u9 s
nginx -s stop  :快速停止nginx
6 _8 V, ~3 N  `* F nginx -s quit  :完整有序的停止nginx
' l" s9 X( t5 C# W" H3 e5 R3 I 如果遇到报错:* M" y8 r+ q# r- @( L% @/ h3 }
bash: nginx: command not found/ I2 t0 ]6 h* G. [1 z( i
有可能是你再linux命令行环境下运行了windows命令,' g) V, ~7 A5 Y' i: ?
如果你之前是允许 nginx -s reload报错, 试下 ./nginx -s reload7 G7 y0 F- ~+ r( e- g
或者 用windows系统自带命令行工具运行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|通达创业无忧 ( 粤ICP备2023021749号|粤公网安备 44030402006137号 )

GMT+8, 2026-3-13 10:41 , Processed in 0.156483 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表