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

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

[复制链接]

430

主题

615

回帖

4155

积分

管理员

积分
4155
QQ
发表于 2023-5-23 17:31:14 | 显示全部楼层 |阅读模式
1.启动nginx- c! L% F9 E1 J
进入nginx安装目录执行) _) d, n' n; o1 b7 h
- T" k4 a! T$ R. V1 Z
./sbin/nginx -c ./conf/nginx.conf% C3 c/ r% k) r5 ?
2.验证nginx配置文件是否正确
( m0 w& j3 O+ _
3 d" C# R6 j: W* Y/ G# _: T# t方法1. 进入nginx安装目录sbin下,输入命令
5 A* H1 C' P& U" z* E4 K3 i' h! E3 R
./nginx -t
7 ~0 X- R) k) G# \4 N$ b回显test is successful说明配置正确
% [6 L. h# ^5 |1 j( N: M2 {' c& r/ Q# k- m0 J0 G. V: O
方法2. 在启动nginx命令 -c 前加 -t
9 F; L' Q, K. c0 H7 u7 N
) d# [( ^" Y5 I! [7 L% m/ R# R./sbin/nginx -t -c ./conf/nginx.conf$ i3 e# w. i/ ~$ {. a
3.停止nginx
. a5 h2 T! @- x# C+ h方法1:2 Y" e( V- o  }( B' n
  ^5 Z" }! [' O3 N7 U2 C' l, ?7 {- C
强制停止:
. j0 a9 t# Z8 C+ n" b4 d; K& D8 w  r! B, X
./sbin/nginx -s stop
7 d" J1 N8 n3 C* |: O处理完请求后停止:
( {2 s8 |6 r  j& b
  L. ^% R8 S+ A1 F./sbin/nginx -s quit
2 H; f# @/ z, u, Z2 c" s4 r4 t% _4 C方法2:! y7 O, Z$ p8 H
: E' M* z' y3 \7 [4 o. t
ps -ef|grep nginx5 K5 w2 N, l" [2 O
找到对应的nginx进程号
( F& H, m# L5 ?1 Q3 o0 J- R& l  ~/ B( K# [& c1 ^/ m
正常停止:% R- u% S8 [. G, Y

1 X5 _3 ^5 N' D- {7 Ykill -15 进程号
" j' L4 r: n/ O! N8 U9 m$ c5 o强制停止:
1 x4 L5 K8 A  Z) \3 l3 z: n4 s. C% l1 o7 ^' r5 l6 }
kill -9 进程号
4 W2 i0 ^7 K" W: v+ t$ j: M4.重启新加载nginx配置文件
  i7 u. u$ v/ l& N方法1. 进入nginx安装目录执行) b$ i. k' G/ T" k
% X+ @# }. {6 ?9 n' \6 J
./sbin/nginx -s reload
! q2 ], G4 X' [) L5.重启nginx服务% c9 k  ?( u9 S/ u$ w' I
方法1. 进入nginx安装目录执行$ w0 k! z# ~9 R# R8 j% g) K
4 r$ y- t1 w7 O4 g$ c2 X
./sbin/nginx -s reopen
- M; z6 j( A4 d$ ] 方法2.查找当前nginx的PID进程号,并kill
/ S7 h0 v) d- L  S- B
0 \! ]5 Q! b& T5 `' |ps -ef|grep nginx
' V8 J* [; c3 v3 l4 w" X0 O/ ~5 G找到对应的nginx进程号,进行
0 B: B1 U/ h0 Z/ U2 }1 n% h2 k* q8 u4 @3 j- ^/ t
kill -HUP 进程号
2 B# a0 M% _8 S% U' U9 ?2 ?: k$ {% n6 N

9 @9 d, \9 g. b+ J! g4 Xkill -1 进程号, w+ v: ]0 T+ \. Y
实现重启nginx服务
' k# W5 e9 I9 J' z. B
. R8 b/ c' l3 p  {: i% f$ l 6.查看nginx版本信息# q: J6 ~: N6 x6 U" o
1).只显示版本信息; k7 J6 r$ l( c7 y7 y& a$ W$ {7 H' x

+ m$ U) A$ x+ W: }- `" B进入nginx安装目录执行5 Q8 @/ x% S! F* B; A0 q2 C
5 h# q1 a( |2 o4 U1 ~
./sbin/nginx -v5 p3 V  [4 N1 J9 e" ~) X; T
2)显示版本信息和配置信息
0 S+ T& B0 V# b! Z1 ^; N2 q9 E" {
( j! m7 j3 @* T进入nginx安装目录执行
8 u( n! Q0 p9 m$ M& A; q
& }, H4 j' Y5 u8 I3 C; ^$ p./sbin/nginx -v
回复

使用道具 举报

430

主题

615

回帖

4155

积分

管理员

积分
4155
QQ
 楼主| 发表于 2023-5-23 17:32:35 | 显示全部楼层
#启动6 ~% u2 e9 J) n) z; ]
#1.直接启动+ ^) @9 y+ E( B9 _- h9 I' h
#进入nginx目录,执行启动命令
; }0 l' `) m3 c" J' ecd /usr/local/nginx/sbin: x- |8 H1 I0 I0 X
./nginx
0 E: o0 j% k: t$ w& l* i! I' J+ W# 或者直接) m4 d5 a  u' ^6 n! k
/usr/local/nginx/sbin/nginx$ F; a8 |5 N- C, v$ G: b
#2.指定配置文件方式启动. I3 S4 Q/ N5 {& ]' }) U
#进入nginx目录,执行启动命令, `9 a% |9 K' Y+ s5 }
cd /usr/local/nginx/sbin
6 O" H9 U5 T8 f) P./nginx -c /usr/local/nginx/conf/nginx.conf0 Z6 l4 P/ ?( u- V- K) k4 Q7 b
#或者; a8 U2 x9 l6 w* j- d$ b
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
2 L4 \$ f/ ~; g
回复

使用道具 举报

430

主题

615

回帖

4155

积分

管理员

积分
4155
QQ
 楼主| 发表于 2023-5-23 17:33:07 | 显示全部楼层
检查ngnix配置文件- b; L# B( R& w4 j: g

" t* D. j( I. W. g% @! M#进入nginx目录' t4 I2 H' J: l) X5 k
cd /usr/local/nginx/sbin
6 Z8 }5 l! \0 |# n; @+ K#检查配置文件是否有语法操作
5 W0 Q9 q7 S- a5 s7 j./nginx -t* z5 [4 k- A" {! O: q
# 或者显示指定配置文件
/ [6 c5 U' B0 X$ E% \./nginx -t -c /usr/local/nginx/conf/nginx.conf
4 {8 \4 l% o, U* a5 b( H: v" L
回复

使用道具 举报

430

主题

615

回帖

4155

积分

管理员

积分
4155
QQ
 楼主| 发表于 2023-5-23 17:33:51 | 显示全部楼层
平滑的重启,修改配置后,重新加载配置. N! J. I' a1 `6 {
4 a* V' Q, b( T& t5 M% J6 s
#进入nginx目录5 y( Y* F7 i+ j7 j9 p, |
cd /usr/local/nginx/sbin
, g" e6 `3 r+ x5 i" Z% C( y2 f#执行重载命令9 N. E- t$ K1 ]8 E! b' }
./nginx -s reload
) d& L: e7 f+ W" B
+ H6 n" W8 ?$ u; [nginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制。
! H2 n* _+ m2 [' k; R: Q7 mnginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件
( {7 T0 o  Q- i$ B2 j) X
% p9 D7 y+ R+ \  g* g+ q* RNginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
& s9 W& W& _- q" y, r: x# [( |Nginx启动新的worker进程,采用新的配置文件9 U+ y3 T9 Q+ J' ]* B- x5 n1 q
Nginx将新的请求分配新的worker进程6 ^- ?, z1 p) `
Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
1 n5 O7 G2 [  y- G2 s重复上面过程,知道全部旧的worker进程都被关闭掉。+ W7 b7 ~- L3 w
所以,重启之后,master的进程号不变,worker的进程号会改变。
回复

使用道具 举报

430

主题

615

回帖

4155

积分

管理员

积分
4155
QQ
 楼主| 发表于 2023-5-23 17:34:10 | 显示全部楼层
关闭nginx( |! [6 _. d: {1 [" t
- [' j4 p; Y: @2 i, _
#进入nginx目录3 x5 h  i* i* J$ t
cd /usr/local/nginx/sbin
/ F* m1 y8 S/ Q5 m* z+ ?# 快速停止nginx
" @9 \% ]& c1 r# q, }" M- S1 i4 [5 h./nginx -s stop3 w5 j- H# x' _5 g7 P6 m. P7 b
# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx2 ]/ s0 k6 a9 ?) h" n1 C
./nginx -s quit
$ F6 \' b* P2 T& i" n: G: S( i
回复

使用道具 举报

430

主题

615

回帖

4155

积分

管理员

积分
4155
QQ
 楼主| 发表于 2023-5-23 17:34:32 | 显示全部楼层
reopen重新打开日志文件9 J, Z" o  D9 O6 }4 ~. i9 k

, Q/ D3 p& o8 k- ^" Z#进入nginx目录3 o$ x' H- P9 n- |
cd /usr/local/nginx/sbin
6 {* V* _4 ?4 {2 J# 重新打开日志文件
4 A2 E% q% W) f" h- f. g./nginx -s reopen
- j# U. y' |) \" `" g$ p: Z* a3 P
回复

使用道具 举报

430

主题

615

回帖

4155

积分

管理员

积分
4155
QQ
 楼主| 发表于 2023-5-23 17:34:53 | 显示全部楼层
当需要切割 nginx 日志文件时,我们需要用到 nginx -s reopen 命令,用来完成新日志的生成。$ d- M" V+ a; K; O
当日志文件太大时,一般我们是按天切割文件,也就是按天做个分类,每天的日志放在一个文件中,并用日期命令,方便日后查找。' ?0 {  ]2 d5 @4 l1 U! g0 J: x( ?
但时我们简单的把文件移动并重新命令是无法及时生效的,因为在 linux 下的文件句柄,文件在被打开的情况下 mv 移走文件,操作这个文件的进程还是有这个文件的信息,原进程还是读写原来的文件,简单的 mv 无法生效也就无法完成我们想要的文件分隔。
4 o; n: x: o6 k: U一般我们需要两步:# D" w8 e! t. m1 Z7 i7 H# y) G
% [( T) T; d' x3 A) A2 N
移走文件并重命名5 B/ p" q2 R: _' t0 t
利用 nginx 的 reopen 功能,完成新日志文件的生成。+ J# b1 \. M* t) w2 V& q
参考地址,感谢博主分享
回复

使用道具 举报

430

主题

615

回帖

4155

积分

管理员

积分
4155
QQ
 楼主| 发表于 2023-5-23 17:35:39 | 显示全部楼层
其他命令重启、关闭nginx! F5 Z9 o# I9 o# |1 x  @
( t: V4 B& q8 Z" O
# 查看进程号,下图  master的为主进程号
( d2 U% O7 f- i( F9 Qps -ef | grep nginx
# G8 R8 f. E- `- L: R/ n#从容停止Nginx" q9 r1 I0 I1 e
kill -QUIT 主进程号/ |% g2 x1 W5 I# M( n
#快速停止Nginx& q3 s) g! J0 Y& `  m1 s
kill -TERM 主进程号/ q( A* B: N* H, Q* L0 s1 D3 P
#强制停止Nginx. k0 [* A) E6 x
pkill -9 nginx$ W7 v9 c' e# s$ d- Q
#平滑重启nginx:4 |9 y6 v7 T; Y  V0 J+ v9 f
kill -HUP 主进程号5 W4 L9 z( o7 k& @# j/ U
回复

使用道具 举报

430

主题

615

回帖

4155

积分

管理员

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

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

1、启动:3 ?' B: ~, `9 j* [

4 c' b9 v; f1 h) IC:\server\nginx-1.0.2>start nginx
; m  ?0 }6 C1 V) ~# F/ p/ E) H" _

; x( \7 [# r8 @, R7 Z' P
& R4 ^1 f) m7 G; g1 a8 LC:\server\nginx-1.0.2>nginx.exe
* L* n4 A3 L, R6 a4 O; D2 z
: ^1 I0 s) I  X注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。
" l1 q9 Z/ z' R
, T1 x! Y  s; \6 [8 a如果需要特殊设置nginx的配置文件路径,可以这样执行start nginx -c conf/nginx.conf
1 a; D8 B2 M, X  @; X! x  b: F5 E" H+ @/ g
2、停止:1 {) a( u' p: f
* c2 l* ^" Z. B. C3 T
C:\server\nginx-1.0.2>nginx.exe -s stop
% U  K; x6 w# M/ x1 ]2 m1 v0 {0 L! A# h; p$ S

, z' E* K& z  S' Q5 A7 K) m$ M, c/ b3 S: m. _9 X
C:\server\nginx-1.0.2>nginx.exe -s quit& F7 Y' N- U) Q' {. j+ T

% E5 L: w+ E& d+ Z0 y注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。4 \0 X$ C7 B' N1 I
3 o! O( ?- x0 Z3 \( p0 x8 B
执行 nginx.exe -s stop或者quit命令是不是不能删除进程?查看进程开了一堆nignx.exe# o+ u( V7 r. J! c  x

; h0 V& l. `8 G8 r6 D9 o$ n还有80端口在Listening,并且浏览器F5刷新还能访问页面,可能nginx.exe版本或系统的原因,用0 ^* P) N9 H& Z+ e' q3 C
1 S! h+ b) A% j* v) [
taskkill /f /im nginx.exe > null 杀死nginx进程0 f$ y7 m2 S" c& |- O7 z: y

  A9 R6 p+ w9 p, _3、重新载入Nginx:
' a3 l' R/ e! c8 i$ l3 a4 J+ i* x( A' J+ D( N/ G/ R
C:\server\nginx-1.0.2>nginx.exe -s reload6 {# s4 [) m9 S# A

  Q; T, e: V& {) W) ~6 F- C+ {当配置信息修改,需要重新载入这些配置时使用此命令。1 x" I4 E: T) I7 S6 L2 A
3 D( J% S7 i. P/ Z  |& \7 T9 n
4、重新打开日志文件:
, g2 \% T) |) N3 T7 \2 k, w* E- O, \2 v( j7 S$ `( h
C:\server\nginx-1.0.2>nginx.exe -s reopen8 n. ?% q7 }+ B4 b2 b0 I2 Q
" v7 N7 X# z/ I( C: @
5、查看Nginx版本:
7 h4 f+ I* m* `: x1 }  @" e8 l: I' X/ E9 x6 F( Q- {  }1 Q
C:\server\nginx-1.0.2>nginx -v) ~( s# B' ?: K  N# Q
: J( y# ?$ h; ~) [  Y# y
nginx: nginx version: nginx/1.0.2
1 U5 n0 O! Z# e2 t: q) x) z1 V+ A- }$ {; c9 f  c, U- B- n
3 a8 i) H, Y6 B+ n4 J

0 D: ^' N/ G4 X' B" [; DC:\server\nginx-1.0.2>nginx -V
) x& w( \4 n% q' H
  v# ^. a3 ?) ^3 t+ a. ynginx: nginx version: nginx/1.0.2
- \% B3 {. Y  T& y
) g) k6 {, E" Z0 v+ g5 `4 fnginx: TLS SNI support enabled
* P6 x9 G7 d5 B# _( i
; u: E& k- O( o1 a8 Lnginx: 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
% H! P5 \0 b# v! c( t, l3 k) z2 h
! M- ?% z" }' F9 D注:v只是简单显示版本信息,V不但显示版本信息,还显示配置参数信息。' d, P+ q; A% }

* Q# @# t2 X4 @4 S& P
3 E* _5 \+ c# r7 O  s$ l, |6、测试或载入指定配置文件:
2 L& _1 t$ L. |+ [2 x' V, {) d' `5 i+ ?
注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:3 T. r' R1 w/ R( u

- E1 R4 M& N8 SC:\server\nginx-1.0.2>nginx.exe -t -c conf/default.conf# `% B$ |$ c6 Q# `5 c9 G
. o1 ^/ [. {- |4 s6 B+ f% M  M- p' c' }
nginx: the configuration file C:\server\nginx-1.0.2/conf/default.conf syntax isok
3 H; u% a( _4 y% q* g4 H* h
8 k  e' P% t/ N' g7 ^! V- Z" A; Jnginx: configuration file C:\server\nginx-1.0.2/conf/default.conf test is successful
0 d( ]: k' l7 F" h* B8 b
( T$ X- H- o2 O) t: W载入指定配置文件* f+ y+ T; T8 h8 _
$ V) @' k# n/ l( q
C:\server\nginx-1.0.2>start nginx.exe -c conf/default.conf
8 ~( l4 R- _6 ?6 |# Z, l6 b
" g; G( F  H* V9 Q% U) u" j
回复

使用道具 举报

430

主题

615

回帖

4155

积分

管理员

积分
4155
QQ
 楼主| 发表于 2023-5-23 17:38:36 | 显示全部楼层
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程
* m; k: S. @8 ?' N 在nginx.exe目录,打开命令行工具,用命令 启动/关闭/重启nginx / n. b/ n% G8 k0 r( P. o
start nginx : 启动nginx
3 x3 G( B6 t6 L: E4 b! ^3 k nginx -s reload  :修改配置后重新加载生效
8 v2 Y  Q6 P  g, A4 P nginx -s reopen  :重新打开日志文件
( f7 S: L( I5 a) r/ b7 e nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确  R2 M( O6 g) n
       关闭nginx:
, r% ]8 @0 l) I+ k0 V% I) R0 ^( D nginx -s stop  :快速停止nginx7 p4 h* D$ _$ r0 L. f
nginx -s quit  :完整有序的停止nginx" W* ~6 k. A( z0 g2 w. V: T. p
如果遇到报错:
7 _0 ^3 c2 i8 N5 [( g$ H bash: nginx: command not found
" l1 O, ?4 Z0 Y0 v( V 有可能是你再linux命令行环境下运行了windows命令,' ]. T3 i( M; W3 k0 v& I% Y
如果你之前是允许 nginx -s reload报错, 试下 ./nginx -s reload
3 C  E7 x$ x5 D7 M3 y 或者 用windows系统自带命令行工具运行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-9 20:19 , Processed in 0.020472 second(s), 20 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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