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

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

[复制链接]

403

主题

594

回帖

4022

积分

管理员

积分
4022
QQ
发表于 2023-5-23 17:31:14 | 显示全部楼层 |阅读模式
1.启动nginx
8 I2 S% }: C' \9 y6 u0 ~" v2 b/ |. z进入nginx安装目录执行
8 ^( W9 A3 d9 ~6 S5 h/ f8 B. }
5 J# }9 U& [0 o8 D./sbin/nginx -c ./conf/nginx.conf
, c: x% [1 g. U8 ^' }  U% R4 x 2.验证nginx配置文件是否正确1 l) L3 ?6 ^+ s% n

! a6 }4 K. I, |' ^" s9 z( }' x方法1. 进入nginx安装目录sbin下,输入命令
8 Q' g8 ]; t" B) d' A: Q; o1 t5 F0 W& G. v
./nginx -t
4 u+ G# R# H  b8 ?" V- M) H7 o7 v回显test is successful说明配置正确
5 w; h+ Z; E3 Q& d  W& r
# G, b3 a" y# d方法2. 在启动nginx命令 -c 前加 -t; K- Z9 M) G) R& y  W& ]$ L

) D* h2 {3 F. _( \. R./sbin/nginx -t -c ./conf/nginx.conf
$ O- j4 w* O. T: u4 m; Z/ D( y3.停止nginx4 ~% s" y; v( Z( |+ i- i
方法1:5 k$ Y8 H4 N: Y2 v

/ x0 {; Y) v, K% w5 }2 ]% X) |3 Z4 L强制停止:8 L) m2 z6 A# J6 d
' ^* c+ I- U3 I& a7 B% w0 q6 z
./sbin/nginx -s stop; P$ [% G3 H) t! X1 b, H: C
处理完请求后停止:5 i0 J- v$ A$ d+ [4 z8 T

) E* B" B7 R5 N" q7 J./sbin/nginx -s quit% f( ^' f6 C* c3 K: s
方法2:4 r0 O/ D. ^( o

. Q( w$ E6 P3 X8 {: }: V2 rps -ef|grep nginx% B# X2 W, z( A' R. K) `9 ~" k0 H3 b
找到对应的nginx进程号
6 B( z/ X6 ^* F: |) m) V* n) D; m: I) D7 D3 R* l4 n3 p6 Y+ ?2 G( c
正常停止:
+ a: M9 z. x( b9 x  f# t8 W; S7 \8 \
5 p, u1 U! w( J/ L" k$ vkill -15 进程号" ?% Z$ S  S' r8 E
强制停止:# m$ K2 n2 V; \2 d7 _

) m  w. |; d& b# a' y, ?3 a% akill -9 进程号
1 I0 Y' y0 ]: _6 T9 J( l4.重启新加载nginx配置文件& _; Y$ Q2 k/ c) y4 r1 z: v0 h
方法1. 进入nginx安装目录执行
" q  ], [' V" ~+ q6 r( B  F: s
4 z7 c/ Q' |8 B./sbin/nginx -s reload  g# z3 Y' |& q
5.重启nginx服务3 s2 q6 X9 U5 O- |, z
方法1. 进入nginx安装目录执行
! C3 x5 A. Y7 p0 o) T2 B5 ]0 T8 E3 ~' |) w+ C6 A' [
./sbin/nginx -s reopen7 s, {  Q4 }- \0 I& u
方法2.查找当前nginx的PID进程号,并kill
7 c5 @5 {# k9 @5 `
( N5 ~" {- V" ^( a2 ^ps -ef|grep nginx
, }4 c' f2 U; H. q" o# E找到对应的nginx进程号,进行
5 F1 t1 D5 U( L+ w$ F" n6 U3 v* }
! G: t' ?# U9 x0 Y+ Fkill -HUP 进程号* C# N9 V, X& t2 k2 W5 r1 @
# C0 u3 {) u) {0 s
+ I1 M+ u# R" f  x: S
kill -1 进程号' y: n7 Y3 ~* S" T! Q% c
实现重启nginx服务
/ g$ o' o! F8 {0 S0 v; j% ?; C! d4 ^3 f5 y; \4 b$ W
6.查看nginx版本信息" g, u5 _! N, Z8 d' ?; ^
1).只显示版本信息6 `3 G' b+ t# Z; g) h1 V
& K! l( f7 M- p
进入nginx安装目录执行9 Y& F- f+ x9 n* H
' _- q' H6 B; |/ F1 n- m8 l2 V- {
./sbin/nginx -v
, H0 |+ R& }' l( r7 V 2)显示版本信息和配置信息7 s2 D) g: O% M" y
1 W2 P$ L% b$ h
进入nginx安装目录执行# D6 I2 H9 C4 ]3 `

* V- ~% u. n( Y* A  p./sbin/nginx -v
回复

使用道具 举报

403

主题

594

回帖

4022

积分

管理员

积分
4022
QQ
 楼主| 发表于 2023-5-23 17:32:35 | 显示全部楼层
#启动  ^6 a! R3 G3 {2 d2 ?3 H
#1.直接启动5 l4 ~: n$ g! F7 k4 o
#进入nginx目录,执行启动命令: G3 O' a4 P* g/ I, u, \
cd /usr/local/nginx/sbin
! y" q8 P, H: J8 j7 S6 N- ]./nginx6 ^' s- n- I* y+ i" w; w
# 或者直接
$ P, b+ Z- d% Q* _/usr/local/nginx/sbin/nginx
2 ]. y1 K; h- x; y( F#2.指定配置文件方式启动
- ~& v* s4 g5 B: ]- R& l/ l#进入nginx目录,执行启动命令
$ B, i  @2 o' m' h1 icd /usr/local/nginx/sbin
/ m/ R# g1 C9 G: u' Q( @0 ?1 @./nginx -c /usr/local/nginx/conf/nginx.conf
6 ^- Y" B4 l5 O" Z9 Y#或者. Z$ m1 D4 j5 B  Z0 K
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf7 g7 H" W& g7 ~) t* {6 M
回复

使用道具 举报

403

主题

594

回帖

4022

积分

管理员

积分
4022
QQ
 楼主| 发表于 2023-5-23 17:33:07 | 显示全部楼层
检查ngnix配置文件6 T, o$ q  }8 b. @/ `

$ |0 f& y/ [$ _, B5 @0 ?6 f1 U7 c#进入nginx目录
) W3 V0 `( h) T! Z( Tcd /usr/local/nginx/sbin2 A; D; w  `" U: j. p3 X
#检查配置文件是否有语法操作
2 P" @* r* L6 N7 X2 ^2 j/ ~5 c% f./nginx -t) Q3 H* x. I+ G: T+ _) T* A
# 或者显示指定配置文件3 ]% I& T" b0 r5 f; C3 Z, E
./nginx -t -c /usr/local/nginx/conf/nginx.conf
9 F1 b. i$ F, }$ D
回复

使用道具 举报

403

主题

594

回帖

4022

积分

管理员

积分
4022
QQ
 楼主| 发表于 2023-5-23 17:33:51 | 显示全部楼层
平滑的重启,修改配置后,重新加载配置2 ]6 M5 M2 S( E* n# _
( m9 Z6 s6 }: X1 |
#进入nginx目录
: k) a$ p) S- Y9 [% j8 N8 A: pcd /usr/local/nginx/sbin3 V- r- I! @" O4 x' K7 [
#执行重载命令
1 F/ F3 |3 g# K, }5 p4 j./nginx -s reload# l' p/ d# T& i1 v
7 T0 x1 U9 k0 ]# V& \
nginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制。5 m0 _) ]) q8 ]
nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件# }& z$ V5 h) O2 @4 R; ~4 Y
/ n  t% Y8 Y$ a; o% ^
Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
/ x/ a2 [& q/ }5 a# G" [# zNginx启动新的worker进程,采用新的配置文件! [; b6 }+ `) I; V  H, _
Nginx将新的请求分配新的worker进程4 @2 Q# A9 w3 y$ e. x# d
Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
6 X, d8 T& L* @; U重复上面过程,知道全部旧的worker进程都被关闭掉。( X, D' U+ B- d
所以,重启之后,master的进程号不变,worker的进程号会改变。
回复

使用道具 举报

403

主题

594

回帖

4022

积分

管理员

积分
4022
QQ
 楼主| 发表于 2023-5-23 17:34:10 | 显示全部楼层
关闭nginx
- i# M5 b" d8 |/ A; q( k, t
; M" U4 l1 |. L; W3 i8 t#进入nginx目录" @5 [- p& q* Z, D
cd /usr/local/nginx/sbin, |6 t% O! K/ d6 \5 p- r' p
# 快速停止nginx, b0 {& h+ p, v' Y& i& W5 O+ ^
./nginx -s stop2 \3 F+ r/ L* Z8 s+ V$ i
# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx( S) @1 a: C! Z  f3 i7 f, b
./nginx -s quit
. o& e8 G* C# k7 w
回复

使用道具 举报

403

主题

594

回帖

4022

积分

管理员

积分
4022
QQ
 楼主| 发表于 2023-5-23 17:34:32 | 显示全部楼层
reopen重新打开日志文件
) M# s* M  b+ Y( w3 }8 `* N5 l- y
6 F; M: Z  l8 c. S& N8 S#进入nginx目录. @! y# ^! s4 `
cd /usr/local/nginx/sbin
' Z3 y5 ~# p5 i8 S/ k# 重新打开日志文件
; i% e0 r" b( ?0 S: Q% A./nginx -s reopen
+ v* ~7 p) c2 D7 g% `  A
回复

使用道具 举报

403

主题

594

回帖

4022

积分

管理员

积分
4022
QQ
 楼主| 发表于 2023-5-23 17:34:53 | 显示全部楼层
当需要切割 nginx 日志文件时,我们需要用到 nginx -s reopen 命令,用来完成新日志的生成。0 Q. D% i4 m8 r5 x; W/ r
当日志文件太大时,一般我们是按天切割文件,也就是按天做个分类,每天的日志放在一个文件中,并用日期命令,方便日后查找。8 u/ f. r4 J% B7 D
但时我们简单的把文件移动并重新命令是无法及时生效的,因为在 linux 下的文件句柄,文件在被打开的情况下 mv 移走文件,操作这个文件的进程还是有这个文件的信息,原进程还是读写原来的文件,简单的 mv 无法生效也就无法完成我们想要的文件分隔。" P- O% v6 Q$ x# H3 A, `3 ~) c
一般我们需要两步:
. X) G* w$ @( V( t5 x, {# |* g  A* X( ?$ Z) c0 ~; C/ S
移走文件并重命名7 H+ J. x& A7 F
利用 nginx 的 reopen 功能,完成新日志文件的生成。
" t+ v) ]. i- E; e参考地址,感谢博主分享
回复

使用道具 举报

403

主题

594

回帖

4022

积分

管理员

积分
4022
QQ
 楼主| 发表于 2023-5-23 17:35:39 | 显示全部楼层
其他命令重启、关闭nginx
- B1 d! W( U' t+ Z+ i, T% ^) R  i1 z( ]& G5 Q8 H( T3 `$ p
# 查看进程号,下图  master的为主进程号. a8 I) V0 f- D+ R; ?6 J; d
ps -ef | grep nginx
; R/ y. f9 u9 W& s7 k! X+ ~#从容停止Nginx& R/ D3 N  y+ _) o  {$ c/ A$ X6 ~9 D
kill -QUIT 主进程号+ f) t' i5 d( ?! h2 [: K# ]
#快速停止Nginx5 t" f" A! k/ M' i( f
kill -TERM 主进程号. u1 _3 c, {. F# x9 B" v% F
#强制停止Nginx0 p, f' ]0 }% n! L! Q1 `  c9 ?
pkill -9 nginx
+ _: m7 T4 ]4 t2 D& |#平滑重启nginx:5 v: O& N. q; A& k1 Y1 F8 }
kill -HUP 主进程号! l0 J3 h: w( M' O  ^8 _
回复

使用道具 举报

403

主题

594

回帖

4022

积分

管理员

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

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

1、启动:7 I$ d0 M$ O$ Y% t9 {0 Y
4 K" ~: Y9 q$ a7 }& G
C:\server\nginx-1.0.2>start nginx
2 ~9 a! L6 x, C' t2 q% T/ x) i! t# t9 i  X6 }

& Z$ v1 L/ e, @4 t2 I! X" m  J* e7 c6 K% ?* R+ B6 a
C:\server\nginx-1.0.2>nginx.exe. H6 S4 v7 G+ P9 i7 t  F

5 N3 I. Z: z: q$ y: N# O注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。% G8 H: e- B/ ]6 A# c, H
. x1 r5 Q4 e+ s/ d' |: l
如果需要特殊设置nginx的配置文件路径,可以这样执行start nginx -c conf/nginx.conf
# [4 w; Y# D! J3 d# N6 m5 U; S- y' I! J  ~% S& ?, @
2、停止:
2 X# W1 w5 f! [1 Q
3 {: A9 n% `- ?& l1 o& lC:\server\nginx-1.0.2>nginx.exe -s stop* g% m8 Z& D1 z2 Y6 X

7 D) o! M) |1 P6 t
0 e7 ]+ E2 B3 O) k7 x% u5 L% h. r9 ]; D  z, z0 q8 Y; |
C:\server\nginx-1.0.2>nginx.exe -s quit
" M% d8 C7 f  |9 O( m( X3 s9 x: U4 n) \2 r; b
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。
: q+ \! A- E3 l, n/ z/ G' i- Y  Z/ S4 @% p) ~7 s
执行 nginx.exe -s stop或者quit命令是不是不能删除进程?查看进程开了一堆nignx.exe
4 v: i6 D$ @- T) q* S
* \( V# ~8 D) Y7 Z还有80端口在Listening,并且浏览器F5刷新还能访问页面,可能nginx.exe版本或系统的原因,用6 D7 v/ F* B4 T* r
: |7 w& ]" h$ Q4 k8 f
taskkill /f /im nginx.exe > null 杀死nginx进程7 Z) S9 T! H1 M4 R0 H
, s& ^+ h& e3 J. F$ V/ v& E' p% I
3、重新载入Nginx:7 u+ V6 h2 T" W  N
# n8 R$ x9 m2 F. M) R) M
C:\server\nginx-1.0.2>nginx.exe -s reload
* L$ G8 m/ i+ T7 a: Z+ `  I, |
当配置信息修改,需要重新载入这些配置时使用此命令。2 w# {/ V% I3 u/ f( j. J: A

/ x+ ~, J7 g+ K# [) y, \4、重新打开日志文件:
4 L7 O, G: C# @+ T
' i" r; C( E0 M2 x4 F  FC:\server\nginx-1.0.2>nginx.exe -s reopen
$ D: S2 Q2 x# G7 h  ?, c$ p: m% H, K- R. K. {$ q
5、查看Nginx版本:
" O# O6 T7 R* p3 J7 R, r" c6 M2 D( S7 D4 C4 p* e
C:\server\nginx-1.0.2>nginx -v' Q. b2 g- e: Z8 }! q" `
5 [' }7 P& S* O" l  E6 u! a
nginx: nginx version: nginx/1.0.2
9 T9 z/ s! }  _8 F1 d& M+ q
( B+ x% b8 L8 f) D; K# ?& j1 l! u" W" v
* b* d# \+ O! d6 ?
, R- z  S1 [4 L' [) ~1 O$ {C:\server\nginx-1.0.2>nginx -V/ U6 e  t: |. W5 Q6 ^- `

7 _& b1 A" {( Nnginx: nginx version: nginx/1.0.2
) l( i& T2 O8 d% o7 l
6 R- G! }* T0 u% Hnginx: TLS SNI support enabled
  t7 s. x' l1 l* Q' w, P/ u4 \, B; ?
" _# k0 m" `% U- c8 d: wnginx: 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$ S% O: G' L" p; D
4 r- k7 d# H0 k# f/ W
注:v只是简单显示版本信息,V不但显示版本信息,还显示配置参数信息。/ x1 Q3 `6 l* ?9 A3 U2 f

5 }4 N) k* n# y. |3 Q8 L
$ m1 e$ z* o- p6、测试或载入指定配置文件:
0 Y2 H) T9 R8 M5 r3 N4 F7 q
# s3 e7 `# m& p. t2 i注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:
! X' S. @! x. \, }) f+ }
9 ]" D* p$ A2 Z1 X" n4 X6 b2 hC:\server\nginx-1.0.2>nginx.exe -t -c conf/default.conf/ j, m6 Q2 E  o/ M; \/ ^( r/ Q
; @7 \- S0 \7 v* a: t. I
nginx: the configuration file C:\server\nginx-1.0.2/conf/default.conf syntax isok; b( Q! R0 o8 ~' B+ K( X8 o. l) Q$ l
5 O7 b; t6 ?# J
nginx: configuration file C:\server\nginx-1.0.2/conf/default.conf test is successful
- g0 i" E) b& h2 J3 l) A" X
$ I: k: w6 B. s载入指定配置文件
% Y) k" _+ G. j5 v8 C7 l3 r7 \
C:\server\nginx-1.0.2>start nginx.exe -c conf/default.conf
( `; a# d9 s2 \
; c  A4 n) F6 H1 h; M6 G8 X
回复

使用道具 举报

403

主题

594

回帖

4022

积分

管理员

积分
4022
QQ
 楼主| 发表于 2023-5-23 17:38:36 | 显示全部楼层
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程9 o8 P) H% ^  f' V" M( t% P" b
在nginx.exe目录,打开命令行工具,用命令 启动/关闭/重启nginx : L7 Z; H+ g% h
start nginx : 启动nginx: m' ~% A" M6 l
nginx -s reload  :修改配置后重新加载生效: `2 t3 N# s+ J3 O9 k4 E
nginx -s reopen  :重新打开日志文件, M4 C6 K6 g+ C
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确1 a8 I* N) }; c& D+ ?/ S/ G5 A
       关闭nginx:
/ w2 j# i3 L5 J: q# | nginx -s stop  :快速停止nginx5 A* j/ q. y- V/ u' C1 f* I4 q
nginx -s quit  :完整有序的停止nginx* ^. q1 k9 X6 d: J
如果遇到报错:
) e+ n* @. J, r2 d5 w( l$ i bash: nginx: command not found
8 v8 I# z; R) }3 _7 B. O 有可能是你再linux命令行环境下运行了windows命令,6 J- {- ^0 o& d, j6 ?& }2 m1 W% M
如果你之前是允许 nginx -s reload报错, 试下 ./nginx -s reload
2 J- m) \. t, w5 T( X 或者 用windows系统自带命令行工具运行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-5 18:10 , Processed in 0.194079 second(s), 3 queries , Redis On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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