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

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

[复制链接]

319

主题

485

回帖

3133

积分

管理员

积分
3133
QQ
发表于 2023-5-23 17:31:14 | 显示全部楼层 |阅读模式
1.启动nginx. g/ V$ E8 _4 F& w% V9 ?: i; ~
进入nginx安装目录执行/ c' N0 p0 ]: c* [, y

6 g' K0 O; |7 V4 t6 l2 g./sbin/nginx -c ./conf/nginx.conf
/ J; ?8 S8 @0 d+ [) ` 2.验证nginx配置文件是否正确% ^) Z* V# u1 t; g' Z6 n$ d
: q( p0 n0 U3 ?) U# i
方法1. 进入nginx安装目录sbin下,输入命令
3 }/ b' u( A8 |% w7 t! p& ^7 r
# ^: e1 H' q' Y./nginx -t
, I2 F8 @2 G  K3 s5 p0 f6 B+ c/ S+ Q回显test is successful说明配置正确& U* P: C6 ?3 ~3 l

' c' C9 L  R' X方法2. 在启动nginx命令 -c 前加 -t
7 \3 `) y+ m' p' y. d
: R4 _+ R9 B$ p% y$ _- X5 `7 u+ H% f./sbin/nginx -t -c ./conf/nginx.conf
' l, O9 X7 l4 J9 S3.停止nginx9 Q1 ?! g- L( [0 ~5 o+ X
方法1:5 s, h% d0 K: ]' C& \! s
. {8 [4 Y6 ^. O6 v8 V
强制停止:+ X+ B( T$ s! o" |/ c
1 K: X0 y) [# k2 C# V+ d2 t7 b- u
./sbin/nginx -s stop" _( S3 `1 G, b$ C. i
处理完请求后停止:; n9 l( J# t4 P2 v8 `0 O- N5 ]! d
0 z! y- Y0 r0 ]( ]& B
./sbin/nginx -s quit$ o! `" u* v& u: h! u, |2 A
方法2:
/ H- ^* f' ^9 m" |  U1 c' w0 A
( D+ W+ x8 ^9 R7 I, f! u/ |ps -ef|grep nginx
: j0 @% Q4 j: u. k# w' F2 `1 k找到对应的nginx进程号
) h1 n! F1 ^6 L8 W$ k7 q6 F) Z
% ?" v+ Q. ]3 i4 ^9 O( ^' o正常停止:! c3 ?  C3 y# F: J/ ?- Z5 V
% {* x2 ?/ X& F+ \- R
kill -15 进程号
4 e9 m6 @  O; p/ [4 `强制停止:
3 n* i; b1 y" |( A& |+ ?+ c+ B, Z6 u- ], d/ T! B9 p
kill -9 进程号& `: s; \( f5 G/ E; n' C. D
4.重启新加载nginx配置文件0 l0 |( }3 t3 F% t2 C4 J( s
方法1. 进入nginx安装目录执行
( D4 \( K  c( c" d
% U" ^* K9 ]) v2 J0 q./sbin/nginx -s reload( r9 L* O9 Z% K* k7 u( N' c$ z" H$ X
5.重启nginx服务. _3 Z, K5 |; w+ x) f6 t' W) D/ K  }
方法1. 进入nginx安装目录执行
# J9 {( @8 t/ `9 ~8 k
5 Q( B# Z* A$ O0 ^./sbin/nginx -s reopen
' v# _' f* I. M& L4 S1 {2 ?; Y( N 方法2.查找当前nginx的PID进程号,并kill  u- M2 W5 J- {- D

) m+ C% g1 a& a( i2 o" _% ups -ef|grep nginx3 r* B: u% `! u1 W
找到对应的nginx进程号,进行
. t' }+ n! ]- U, `* k' b% r) T
6 M7 s# \& {- R1 a5 R2 }: q3 nkill -HUP 进程号
) |% n4 E2 B* E4 n
! B3 _7 H, Y( s4 s4 j
) {' r: ^, f4 {( ckill -1 进程号% x# Z/ |+ ^1 t8 k
实现重启nginx服务
& v3 N2 A* G9 H4 {8 @  s7 }4 J7 Q7 H; {
6.查看nginx版本信息* e5 P( H5 _. j3 B$ o& f
1).只显示版本信息
2 f6 c3 i9 H! _3 D! q: ?! b! f" a$ e+ d: Y7 ^9 C5 ?+ c0 r. Y7 J
进入nginx安装目录执行9 C) ^3 U2 |" ~! G

+ q; Y! f9 Z8 D2 O; y: S./sbin/nginx -v! ^, _( j6 q% M' z- y2 d
2)显示版本信息和配置信息
4 @# T5 i7 U# J$ m1 l/ t% Q
2 s  ?" G! O* {2 T+ O, V" w' Y  i8 }4 O进入nginx安装目录执行% o. B! U) q6 p3 t" D
+ C7 z9 c: P2 z0 L7 \
./sbin/nginx -v
回复

使用道具 举报

319

主题

485

回帖

3133

积分

管理员

积分
3133
QQ
 楼主| 发表于 2023-5-23 17:32:35 | 显示全部楼层
#启动
; q# N7 G# |. a3 Q4 W0 A#1.直接启动; `; v" d; I" J4 I- t6 _2 o
#进入nginx目录,执行启动命令
; q% i% I* z  b4 Y7 P8 ocd /usr/local/nginx/sbin
+ a3 K; h& A3 C1 A7 j( L) P7 d./nginx) x8 o  [7 M' J+ K9 |. N
# 或者直接# s! u. o, Z+ l& D
/usr/local/nginx/sbin/nginx1 R7 z. b' G$ D! n. U* x3 [
#2.指定配置文件方式启动8 z/ ]- y* J, C, o. O
#进入nginx目录,执行启动命令
7 d! X0 o, A' N3 R0 |6 zcd /usr/local/nginx/sbin1 e/ M7 O1 K+ d0 M0 ?; R. \  w
./nginx -c /usr/local/nginx/conf/nginx.conf
# y1 g$ h# U' U- w1 N5 J#或者
( J8 @: b# [. p) i/ P. M$ h/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
9 W/ |: D  T  Y" r$ X- M* x
回复

使用道具 举报

319

主题

485

回帖

3133

积分

管理员

积分
3133
QQ
 楼主| 发表于 2023-5-23 17:33:07 | 显示全部楼层
检查ngnix配置文件
* W0 j+ q5 M  d, R
8 Q  `# H$ L# n/ h, F% \7 B#进入nginx目录
$ h% Y1 k- B1 V4 S* c& y: O3 D$ qcd /usr/local/nginx/sbin2 |% R) K3 M$ s$ s4 E" x
#检查配置文件是否有语法操作6 D) _3 b$ C3 P" O2 z9 H# Q
./nginx -t
2 J0 G, {. U0 q9 Z6 }# 或者显示指定配置文件5 C1 E8 D, W+ w! Q( K. p
./nginx -t -c /usr/local/nginx/conf/nginx.conf
* @  s0 w) T, Y4 D
回复

使用道具 举报

319

主题

485

回帖

3133

积分

管理员

积分
3133
QQ
 楼主| 发表于 2023-5-23 17:33:51 | 显示全部楼层
平滑的重启,修改配置后,重新加载配置( C& G+ {1 T2 j* q1 V$ u$ U1 M

% s2 \* Z) g6 S0 w/ ~# ?#进入nginx目录
5 w- s* M. J# Acd /usr/local/nginx/sbin
+ K) A& B9 y8 n! ?4 ?5 n# p+ f#执行重载命令
9 ]: y- ~  ~/ S. U& ^/ `./nginx -s reload5 k9 G  ?/ G! C; @% P+ d

9 ]. C3 r2 M# y, M( v) A) Cnginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制。
( l2 p7 V4 m3 m& G7 unginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件
' I4 H: m% x; g0 q% O& g4 _; [
; ^, k( @; Z  ^0 k+ VNginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)0 m1 N9 ?& s8 e2 E' H7 `& S% t2 ]& p$ e
Nginx启动新的worker进程,采用新的配置文件
7 {0 n. W8 v& A' f* R% u- E* ZNginx将新的请求分配新的worker进程
# X- P! A, y- J+ l/ g# w$ R  V2 zNginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
. ^9 }/ d* T2 Z重复上面过程,知道全部旧的worker进程都被关闭掉。+ _. S; K, w# K6 H1 j& u
所以,重启之后,master的进程号不变,worker的进程号会改变。
回复

使用道具 举报

319

主题

485

回帖

3133

积分

管理员

积分
3133
QQ
 楼主| 发表于 2023-5-23 17:34:10 | 显示全部楼层
关闭nginx0 c1 I5 m" i/ Z5 ?4 B, E1 |

) ], v* I5 G) R#进入nginx目录
, |" s8 [- n0 ]# qcd /usr/local/nginx/sbin
+ M! t$ X& X* H# 快速停止nginx
4 V5 A& a9 \& T4 j) o0 l2 L./nginx -s stop
: g( c' a" l* D4 x  O1 j# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx: |$ i3 c' X( s& v7 f( z" O
./nginx -s quit% l1 T: Z: v1 j0 I4 `' i7 Y) g3 G* {
回复

使用道具 举报

319

主题

485

回帖

3133

积分

管理员

积分
3133
QQ
 楼主| 发表于 2023-5-23 17:34:32 | 显示全部楼层
reopen重新打开日志文件$ L- @( E/ S' N
1 f- B% o4 P+ _' o. P- Z) [% [7 l
#进入nginx目录
: X: L* S- x$ S2 |cd /usr/local/nginx/sbin
7 L. @- k. \2 v  p$ z, I# 重新打开日志文件4 g/ i9 ?; ]* \8 U. c* m
./nginx -s reopen
$ H( _: Z# Z& W6 c5 F
回复

使用道具 举报

319

主题

485

回帖

3133

积分

管理员

积分
3133
QQ
 楼主| 发表于 2023-5-23 17:34:53 | 显示全部楼层
当需要切割 nginx 日志文件时,我们需要用到 nginx -s reopen 命令,用来完成新日志的生成。
" ~$ D) d+ o' c1 s+ _: \4 Y2 d当日志文件太大时,一般我们是按天切割文件,也就是按天做个分类,每天的日志放在一个文件中,并用日期命令,方便日后查找。; G8 F4 W9 ^! X+ b2 q
但时我们简单的把文件移动并重新命令是无法及时生效的,因为在 linux 下的文件句柄,文件在被打开的情况下 mv 移走文件,操作这个文件的进程还是有这个文件的信息,原进程还是读写原来的文件,简单的 mv 无法生效也就无法完成我们想要的文件分隔。
4 i& n" Y! F+ B* r6 s6 O6 G, r一般我们需要两步:+ L# ^8 d! ^; k$ k/ E; P* u$ t

( a1 M8 ]  f" W; e' N# I! y0 |移走文件并重命名; }; J) Q6 k% S9 R& m
利用 nginx 的 reopen 功能,完成新日志文件的生成。
+ F7 Y9 L+ ?0 G, z3 S$ V参考地址,感谢博主分享
回复

使用道具 举报

319

主题

485

回帖

3133

积分

管理员

积分
3133
QQ
 楼主| 发表于 2023-5-23 17:35:39 | 显示全部楼层
其他命令重启、关闭nginx
, K# q5 _9 G& W& h8 ]! I5 `& d3 Y" r- p7 h$ e
# 查看进程号,下图  master的为主进程号5 V9 S4 w+ b  G/ ~, |& q6 d
ps -ef | grep nginx
( h4 V8 U  K1 _$ H#从容停止Nginx
5 g% r" C6 a$ v$ ~; `! Z, ukill -QUIT 主进程号/ h5 i: w' K( `) n8 {
#快速停止Nginx- J' C  p9 q9 E
kill -TERM 主进程号6 t/ |3 X8 e9 u: z" C
#强制停止Nginx9 @  N8 z, y' s
pkill -9 nginx
7 ~* Z# v6 O( d/ B$ ]1 e#平滑重启nginx:4 q5 {9 B4 v  a3 N; a
kill -HUP 主进程号" H; q0 X+ r: r* h; l: u
回复

使用道具 举报

319

主题

485

回帖

3133

积分

管理员

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

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

1、启动:* @( ]; g: @6 s1 C' \
5 b# R5 ?5 `: k+ [
C:\server\nginx-1.0.2>start nginx* L8 G5 o: X+ C# \  R

" j: C, o, Q/ ?" l/ ?: L
* o" I4 x: t) `  \0 o  P# }! A5 z: G; }7 W
C:\server\nginx-1.0.2>nginx.exe% ]$ {" O! L, h- k0 l

1 {% e+ T3 K0 ^. B% o注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。
, Z/ U( d4 F" Z* s' K
# ~: f8 x6 s0 N- l如果需要特殊设置nginx的配置文件路径,可以这样执行start nginx -c conf/nginx.conf
% m: r/ l; e7 R5 k
3 R+ r; q0 \$ i" T" U2、停止:9 M7 [6 \1 X5 w6 i

/ o( }2 c2 K8 `; O9 n+ gC:\server\nginx-1.0.2>nginx.exe -s stop/ E3 Z7 j% p; k) W

' g: c1 ]+ m! p5 b( z) O2 o- K0 v

* c/ g0 k) k' ?3 X0 X' ]. tC:\server\nginx-1.0.2>nginx.exe -s quit
, Q7 K' D9 B: \/ c2 D
# S) y! B. C* i( _. G# k注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。! Z& r3 Z: g: D" d* b  B9 q2 a" J6 Z
! g, x: e7 ?  C; [2 u
执行 nginx.exe -s stop或者quit命令是不是不能删除进程?查看进程开了一堆nignx.exe
& a* d! _! I0 _" G) l2 ~+ D0 q' ~7 I7 s
还有80端口在Listening,并且浏览器F5刷新还能访问页面,可能nginx.exe版本或系统的原因,用& U9 E4 c  y, n5 N& i8 b

6 X1 {% H+ X- r1 e& h/ Rtaskkill /f /im nginx.exe > null 杀死nginx进程3 n0 e9 W5 F; `3 N! ^- V3 l  [

3 \/ \7 J: Y5 B6 k% @- F3、重新载入Nginx:
" x$ E. ~8 h- U1 H3 |* g7 t  i# {" j( i6 N) Y- P) F3 }
C:\server\nginx-1.0.2>nginx.exe -s reload
. y) l& n: N7 w6 R1 v8 l/ i. C1 O2 ~
当配置信息修改,需要重新载入这些配置时使用此命令。
; e9 O, U7 V1 p9 |: H: a1 U* M6 W
: Q8 }0 h9 P3 g9 W4、重新打开日志文件:
" x. o5 r+ S4 z! C1 m$ I3 E: n1 [# [
C:\server\nginx-1.0.2>nginx.exe -s reopen/ B/ P: E; Y# s3 u: H
9 [0 W/ @6 s' Z1 n
5、查看Nginx版本:
! B- E6 |# b$ t0 l5 ^) W5 ]6 c1 t4 H5 R" r7 \* d" L
C:\server\nginx-1.0.2>nginx -v# \( t& R/ v6 V( c5 M
) G8 M6 `* Q8 K/ I1 e& ^
nginx: nginx version: nginx/1.0.2
9 o6 ^) f. S# ^# j* _5 M7 f' N# F! ^" h0 m% h6 U& O
+ O  p5 _+ F8 ~- p& ^

! ]; h3 z4 e- H% k6 ~1 b& ]C:\server\nginx-1.0.2>nginx -V
5 ~4 G! l5 Z1 z9 A/ H
' C' h! l* y' W: X+ \8 E; dnginx: nginx version: nginx/1.0.2
' F: F% V* s" N2 T, J7 v  ^+ V6 s4 H* U- V. U
nginx: TLS SNI support enabled9 x8 ]+ o# J) V3 A

4 c) g) a& c. o& Z- G( cnginx: 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( y* H* k2 W3 r) I2 x# c
4 g+ m' t1 Z6 [  X' i
注:v只是简单显示版本信息,V不但显示版本信息,还显示配置参数信息。
& j6 {4 z* d" u5 S/ f4 o4 [$ F# D& G) }& h

9 \; j! y, s3 k6、测试或载入指定配置文件:
' E! a, J+ m) \
. d# w* h* M+ @注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:: I6 s# O; I" a; d
3 \* E# y7 I/ I8 C- ?% B" `
C:\server\nginx-1.0.2>nginx.exe -t -c conf/default.conf
+ ]4 E; T7 ]5 R0 `  t: S3 G3 a  I" A
nginx: the configuration file C:\server\nginx-1.0.2/conf/default.conf syntax isok. A( u$ y( }" A- I

0 l+ M. ~" F" x0 Hnginx: configuration file C:\server\nginx-1.0.2/conf/default.conf test is successful2 S# e7 h3 T4 u% `0 q
8 v7 L9 [2 y2 |. V' B; t
载入指定配置文件! \4 s" t, q4 F3 z3 A. b6 I! g

: O5 \; W% {! Q3 L# x3 ZC:\server\nginx-1.0.2>start nginx.exe -c conf/default.conf+ p. F% j6 {+ J( [, E( t$ ?* N

- B) d' L3 x, m6 v6 \
回复

使用道具 举报

319

主题

485

回帖

3133

积分

管理员

积分
3133
QQ
 楼主| 发表于 2023-5-23 17:38:36 | 显示全部楼层
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程
2 C+ `7 q, c8 ~ 在nginx.exe目录,打开命令行工具,用命令 启动/关闭/重启nginx
" h$ O, g6 j3 J: M start nginx : 启动nginx) @2 a7 j# O0 ^4 Z5 l$ n
nginx -s reload  :修改配置后重新加载生效, k& ?8 e3 L0 a# @6 D
nginx -s reopen  :重新打开日志文件: c4 Q% i! b' H8 M+ y
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确# S, W: z9 E1 M  K7 ~0 [
       关闭nginx:
2 L$ n" V) Z  W+ ]4 }9 s; b nginx -s stop  :快速停止nginx3 @) F3 @; r; @! i( B& r" _0 |1 n- Q: i/ F
nginx -s quit  :完整有序的停止nginx
+ D) e6 W6 z/ S, C" n$ X 如果遇到报错:
, a1 a% ~5 L: {/ k! A bash: nginx: command not found3 J* a' U1 C/ ^5 c
有可能是你再linux命令行环境下运行了windows命令,
/ O+ _( U$ W  `* H/ ]% b1 b 如果你之前是允许 nginx -s reload报错, 试下 ./nginx -s reload) Q. i+ I& x3 ^* T+ F+ J/ S! z8 a+ Q
或者 用windows系统自带命令行工具运行
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|通达产控投资 ( 粤ICP备2023021749号-1|粤公网安备 44030402006137号 )

GMT+8, 2025-7-23 14:18 , Processed in 0.095987 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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