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

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

[复制链接]

328

主题

499

回帖

3260

积分

管理员

积分
3260
QQ
发表于 2023-5-23 17:31:14 | 显示全部楼层 |阅读模式
1.启动nginx
( c' ]7 S  w* G/ }0 E/ A( x进入nginx安装目录执行2 Q8 Q: A* U  m8 b
, L2 g! O' _. q
./sbin/nginx -c ./conf/nginx.conf7 z" z. k/ V2 \" F& m$ L' e: w
2.验证nginx配置文件是否正确
0 u1 ]9 Q0 e- r. K: o+ P
/ z+ d( q) _' I  ]: ?* ]方法1. 进入nginx安装目录sbin下,输入命令
  J& l" Z* u, M# N9 ]% l
! W9 K# ]% w8 G3 ^1 u0 e./nginx -t# U- d, n0 V$ W1 Z0 Y7 r
回显test is successful说明配置正确
* j# y, N' g+ f# w" h: T: [
0 T5 `+ U: v4 u+ G$ w6 R1 W方法2. 在启动nginx命令 -c 前加 -t9 l- B: s  E7 `, `6 C/ P
# o6 b  p( M2 Z0 J( M8 t
./sbin/nginx -t -c ./conf/nginx.conf
& ^& j! O4 l( H- z, `; H( R3.停止nginx
$ v6 n* s( ^% O0 n. a$ Z方法1:/ n. f, X9 ~" y5 {

% H  p  O' u* n4 L强制停止:5 @+ J  D7 u5 E6 s# J8 Z4 R

2 Y  l7 B% s: m2 n$ J. s./sbin/nginx -s stop' d" U# M) a7 `! |  S6 z# Q% o2 N
处理完请求后停止:6 O: b# ?# P! @  [! D& l8 z/ P9 ~$ M

2 ?  |" M  H" ]7 e2 i. S& C" N2 ]* |./sbin/nginx -s quit
9 O0 B+ R9 f% E' H* E1 l# d方法2:; G0 s% R6 b2 H5 Q) h! U
: j- F% R/ D( Y
ps -ef|grep nginx
; h9 _- [+ ^  x! N, m7 K找到对应的nginx进程号
6 h" V7 y/ ~5 u1 f0 n, M) H" e5 \8 E/ Z4 x$ n
正常停止:
0 f1 D! A, d' Y3 U  K) g5 C! \3 H2 ?- _6 b
kill -15 进程号2 @. f  m9 q# \5 }
强制停止:
* o$ M3 A. E# U! a, y
3 I! _9 [5 [) w) k/ m  ~9 g1 Rkill -9 进程号& D/ c% R# s6 }
4.重启新加载nginx配置文件1 ~& |2 d0 E6 n* ?) _2 b$ I; ^
方法1. 进入nginx安装目录执行8 v* q5 o# h2 ]0 T8 T# E

+ p& r5 n, T6 ?, M./sbin/nginx -s reload
3 {; o& S7 N% B1 U! B: v5.重启nginx服务
4 u4 @4 t+ v! v5 `% N1 e5 j% a3 u方法1. 进入nginx安装目录执行
" P5 s. ?' O  o- g9 I. U
9 y1 \( C* J7 M8 |4 s$ q, L./sbin/nginx -s reopen2 F' ]7 C9 {4 Z) g
方法2.查找当前nginx的PID进程号,并kill5 t  h: x7 f  o* N8 i% F

. A  m0 f" g; b5 A+ W1 `. ?" qps -ef|grep nginx
- i/ d; s5 X2 r6 m' L  r1 _找到对应的nginx进程号,进行& y5 C" n& X* K# b

1 I" x2 p, [& }( r- }7 nkill -HUP 进程号, s+ b) t/ E0 y0 `8 |
, k7 N. M5 q* i# U7 ]3 Z( z8 P8 t

7 ~9 [3 A8 N' M) bkill -1 进程号" h, o" }$ T: ^
实现重启nginx服务
8 f$ m# m& ]. T" O0 r- ~
3 D6 Q  \8 x% D; Q7 ~" G 6.查看nginx版本信息
2 c. J7 k# O6 c5 e7 y) f1).只显示版本信息
4 y3 K: R, e8 S+ ]4 c1 a
# G* Y: ~! P& n( i+ j+ o进入nginx安装目录执行/ P$ v& L! P+ \  t
5 W7 c8 t& d2 c, U& z2 ?
./sbin/nginx -v6 Q' Y( O: u! ]4 F, J8 ^  b& G
2)显示版本信息和配置信息
5 ~3 i% W9 f  T/ k" j4 Z' K; D2 I4 C. n6 a0 V2 E. y* G
进入nginx安装目录执行
; W  v( w+ K$ R9 N1 \7 R, U
1 i/ R+ c" h7 \$ t./sbin/nginx -v
回复

使用道具 举报

328

主题

499

回帖

3260

积分

管理员

积分
3260
QQ
 楼主| 发表于 2023-5-23 17:32:35 | 显示全部楼层
#启动/ p6 V0 f( A6 R9 y( @& l# b  c/ C
#1.直接启动
& O, D  s( Y1 d1 M& n: @$ C! C#进入nginx目录,执行启动命令! N- b% P; R- z8 m, D8 {0 U1 Y$ ]# \! g6 e
cd /usr/local/nginx/sbin
7 q+ |( B& T- B8 u./nginx# a4 p( k9 L- |7 @9 c5 a, G
# 或者直接1 y: C* k( z2 H
/usr/local/nginx/sbin/nginx& X- U5 a. K1 I0 k7 \- z
#2.指定配置文件方式启动. C. @1 I1 u8 C& g+ |3 M4 N! X2 r
#进入nginx目录,执行启动命令
, N+ o( C: @+ t; h5 p3 Dcd /usr/local/nginx/sbin
; X# p$ }9 F0 c( F# v: Q./nginx -c /usr/local/nginx/conf/nginx.conf
& {4 G* t, b: I#或者
, Y  N# q$ K1 X: n( W/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
' K, r. _2 r1 p1 \
回复

使用道具 举报

328

主题

499

回帖

3260

积分

管理员

积分
3260
QQ
 楼主| 发表于 2023-5-23 17:33:07 | 显示全部楼层
检查ngnix配置文件# r' l& q$ D3 W8 x. d$ C1 O) I- F3 t

' {+ g0 i+ d% s' D+ Q, A: x" v#进入nginx目录% y. r7 g% q0 \
cd /usr/local/nginx/sbin
; r: G4 Y$ h' U/ b#检查配置文件是否有语法操作
1 z1 {4 U/ y( ~  i- s1 B./nginx -t
% ?, y' t. V( m1 v0 `* O! I# 或者显示指定配置文件& \1 D' c' o4 ^9 F' r5 K4 r
./nginx -t -c /usr/local/nginx/conf/nginx.conf$ v) ]4 [( T1 o8 J$ o
回复

使用道具 举报

328

主题

499

回帖

3260

积分

管理员

积分
3260
QQ
 楼主| 发表于 2023-5-23 17:33:51 | 显示全部楼层
平滑的重启,修改配置后,重新加载配置
; [! |' s$ u, o' \/ Y: o
* v# I, G$ Q# W#进入nginx目录+ ?4 A6 V4 l+ w2 r
cd /usr/local/nginx/sbin1 {) \- n7 X' R6 w& s1 Z1 [' F
#执行重载命令  v" G. g: S& k
./nginx -s reload
! N+ i# E0 v, e5 O; h/ I% J; b, R5 k1 `6 M- w
nginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制。
$ `$ L3 @& Z4 ynginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件
; e. G, J- r; Y: ^1 ~" d5 T# z# u5 N: I+ g( }$ `! ?
Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)" L& l, U$ b5 B2 n
Nginx启动新的worker进程,采用新的配置文件
; }- i# z9 z" s8 NNginx将新的请求分配新的worker进程
: h+ j- T% O- y$ f- WNginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
6 p# A' {3 u4 J# |: @- r重复上面过程,知道全部旧的worker进程都被关闭掉。- I8 _2 R8 _4 C" ?2 P% o. v
所以,重启之后,master的进程号不变,worker的进程号会改变。
回复

使用道具 举报

328

主题

499

回帖

3260

积分

管理员

积分
3260
QQ
 楼主| 发表于 2023-5-23 17:34:10 | 显示全部楼层
关闭nginx3 \  b4 d6 D# l% s3 D1 a& J: y

" `' k3 f: W0 W6 W( f#进入nginx目录
% B  H, A4 N1 ]+ _0 L) Mcd /usr/local/nginx/sbin+ y7 f' d2 L0 ^  J% \) J& ~, k
# 快速停止nginx2 l8 v4 X( N' `& M
./nginx -s stop
3 }$ X2 C* X: `: c+ {# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx8 \& n* }9 A5 f
./nginx -s quit5 f' A* \+ p' W2 g
回复

使用道具 举报

328

主题

499

回帖

3260

积分

管理员

积分
3260
QQ
 楼主| 发表于 2023-5-23 17:34:32 | 显示全部楼层
reopen重新打开日志文件: }0 D5 Y1 L6 _( j& d

2 _% F- p* c1 i3 t+ E; n9 `#进入nginx目录
% k4 X( w7 |6 `: C6 u8 Zcd /usr/local/nginx/sbin
2 M  O! S& }3 P# 重新打开日志文件) r$ z9 q- ?/ Y
./nginx -s reopen
+ d( \2 p: }- G" k) {. H9 P7 n
回复

使用道具 举报

328

主题

499

回帖

3260

积分

管理员

积分
3260
QQ
 楼主| 发表于 2023-5-23 17:34:53 | 显示全部楼层
当需要切割 nginx 日志文件时,我们需要用到 nginx -s reopen 命令,用来完成新日志的生成。
, {( L; I' |8 n6 \当日志文件太大时,一般我们是按天切割文件,也就是按天做个分类,每天的日志放在一个文件中,并用日期命令,方便日后查找。/ q( t: p1 a  c' e5 \, r
但时我们简单的把文件移动并重新命令是无法及时生效的,因为在 linux 下的文件句柄,文件在被打开的情况下 mv 移走文件,操作这个文件的进程还是有这个文件的信息,原进程还是读写原来的文件,简单的 mv 无法生效也就无法完成我们想要的文件分隔。
+ W/ J% I* r+ w& p0 ~一般我们需要两步:
5 D4 @: v, ^& g- J8 F6 c  C
9 r! ]% C4 u. |( P移走文件并重命名; d/ D- G) a8 X6 E: _. X: c
利用 nginx 的 reopen 功能,完成新日志文件的生成。
2 w5 T& W! p* w/ I* n参考地址,感谢博主分享
回复

使用道具 举报

328

主题

499

回帖

3260

积分

管理员

积分
3260
QQ
 楼主| 发表于 2023-5-23 17:35:39 | 显示全部楼层
其他命令重启、关闭nginx* \! d3 i3 \* d7 @

7 C4 i' k; t7 W) ~' _# 查看进程号,下图  master的为主进程号
2 r" W6 N8 ^. Y) _. rps -ef | grep nginx- s0 \$ f& i  [- l' e" F# u
#从容停止Nginx
+ L/ S* ?& m1 y9 x% [kill -QUIT 主进程号
5 H% B# f3 A, t#快速停止Nginx% X3 {$ t  Q& p9 R$ r! k$ |6 _5 J
kill -TERM 主进程号* r1 z, t2 H* `3 A- R7 E$ V
#强制停止Nginx/ \$ n' l. |& k8 |2 |# x$ X" j
pkill -9 nginx, c) P( ^% o1 M; n9 z$ R8 p
#平滑重启nginx:0 c. Y+ w/ _" ]6 q
kill -HUP 主进程号6 `+ V- X  e4 H: V) t# m; Z/ D& J
回复

使用道具 举报

328

主题

499

回帖

3260

积分

管理员

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

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

1、启动:
0 k1 ]2 y* w0 e  T) e3 X) j
, Y4 }  {1 q( u+ G) C! N- U$ u* ^C:\server\nginx-1.0.2>start nginx
' t# g, C5 P/ B/ F4 o% I3 D; d6 j
1 B+ i( \: o# L8 {- v. k0 s$ q9 w1 S$ \: f9 p) x
) h" k6 Q+ T( _2 `! i: ]
C:\server\nginx-1.0.2>nginx.exe
# l2 e/ ~; l7 ^& U1 {  d9 z8 t
' D- `$ K9 a( Z; W注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。. ]5 H8 d1 {! W, p
: X6 e7 T. d, F5 Y* d
如果需要特殊设置nginx的配置文件路径,可以这样执行start nginx -c conf/nginx.conf' J. q6 S1 \1 p

5 `+ _1 u8 o% b% n8 r: {" o/ Q2、停止:$ m% ?8 W, ?/ n5 A; h! B- r
0 h8 u" R7 p2 e' O6 {. T0 W
C:\server\nginx-1.0.2>nginx.exe -s stop0 \2 h7 V' r& l* Z' G7 L
8 _: ^  h# k& G# e( F
  B% A: l' c8 G# ~3 u. G

2 \, }. h$ p3 X* dC:\server\nginx-1.0.2>nginx.exe -s quit/ w/ w( O. o6 C) P

' ?  \! y/ F+ W$ m* x注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。5 I; C! }# P+ _9 }$ H
, n6 I0 Y3 S8 }4 y) z0 o/ P
执行 nginx.exe -s stop或者quit命令是不是不能删除进程?查看进程开了一堆nignx.exe
) M9 ^; v, b& [5 C' ^3 E" u) T0 n+ w% ?( \
还有80端口在Listening,并且浏览器F5刷新还能访问页面,可能nginx.exe版本或系统的原因,用
4 v% y5 ~- \! r( _' y0 k) R. Z" L$ W# h, Z% c/ F- k- V/ q
taskkill /f /im nginx.exe > null 杀死nginx进程4 n9 M0 y" z! [+ y' a. n

* S: ?/ ?; n1 S+ m3、重新载入Nginx:
. [* N$ O7 p( M5 E4 d% \" x
; H4 m. O+ f9 ~C:\server\nginx-1.0.2>nginx.exe -s reload1 j( m- D/ Q) Z! X
3 V2 X% c/ _. R* ~. R4 X
当配置信息修改,需要重新载入这些配置时使用此命令。
* ]$ `7 U' A' Y* t5 y: F5 G. m5 n3 Z+ C1 L4 m* m
4、重新打开日志文件:$ F% u6 ~6 P' J& Z
6 h+ ~8 Z% M& e3 y  R
C:\server\nginx-1.0.2>nginx.exe -s reopen
* J% E8 n# @3 }# w& O- E6 s
* n, J  d6 q" U  u4 j5、查看Nginx版本:
2 c7 g) Q7 y$ C2 s9 B9 n. A/ W5 }
: |$ g+ h; |% g* CC:\server\nginx-1.0.2>nginx -v
0 r$ l  c0 h6 x7 e% h
" F+ |. ~+ k5 e4 n* S% o3 Inginx: nginx version: nginx/1.0.2
# Y# l" I% Q/ }, W  k+ ~9 ~
- {0 N6 n: ]# p
$ D3 _( r0 Q6 ^  c( u! U0 ?
# v8 e! z- K- @' P* C1 X: y8 LC:\server\nginx-1.0.2>nginx -V
; x  k& P2 v8 e8 G' K7 {8 ]/ ^2 H: {2 `0 L7 h9 S2 N' ^
nginx: nginx version: nginx/1.0.24 b' R4 h/ M. [( T/ y1 t4 _" ~4 c

% S- P2 G. S% cnginx: TLS SNI support enabled
* }2 B4 W# a) t8 k. `
) y. s( R+ L) L6 znginx: 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
( Q5 u* I" o, z$ H8 s* }, K( x  ?$ D/ q% S( J
注:v只是简单显示版本信息,V不但显示版本信息,还显示配置参数信息。0 w' ^( i- t9 ?. J5 g- f3 ^

- Q2 [: e; @/ t& a  S) t1 @/ n5 Y) L1 N* P; U3 b+ H
6、测试或载入指定配置文件:
3 \* q3 V7 Y  ~' S7 f, H* N
" M7 X$ i# X' p% k2 i注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:% S2 d* P. Q7 S/ t, ^4 Z
2 @+ M+ {) O! p4 V- v5 \0 j0 G+ g
C:\server\nginx-1.0.2>nginx.exe -t -c conf/default.conf7 [0 m7 [: h) w) y0 Z$ U6 s9 }
- Z1 ]( x/ D. b! V8 P
nginx: the configuration file C:\server\nginx-1.0.2/conf/default.conf syntax isok# {3 J; m! F3 ^
3 Q9 {) {  U8 _7 B0 Z
nginx: configuration file C:\server\nginx-1.0.2/conf/default.conf test is successful! j4 W  z, ?+ I/ L% r

9 s- u5 J' H# s# ?% K4 M- F载入指定配置文件
* Y4 E/ A. u) ], ~  O& n
# n' k; J: a$ e0 lC:\server\nginx-1.0.2>start nginx.exe -c conf/default.conf0 \+ J/ f9 e; V8 t/ g1 V' _* [

" L, `/ }: B0 f# @
回复

使用道具 举报

328

主题

499

回帖

3260

积分

管理员

积分
3260
QQ
 楼主| 发表于 2023-5-23 17:38:36 | 显示全部楼层
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程5 l$ s3 {$ m% c5 H+ d+ \" a
在nginx.exe目录,打开命令行工具,用命令 启动/关闭/重启nginx
4 P9 f8 |4 I8 |2 w, w start nginx : 启动nginx; M% l3 j( _3 n. _) d% o+ Z0 d
nginx -s reload  :修改配置后重新加载生效
& m7 g' L, e5 Q/ v$ r5 d+ ] nginx -s reopen  :重新打开日志文件
3 }/ V. \( Z+ G; e nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确5 ~! V, I% |4 ^/ c
       关闭nginx:
- X& I$ L& Q5 h/ O, S/ S1 D nginx -s stop  :快速停止nginx# A) T3 {1 b  A9 }6 y: k
nginx -s quit  :完整有序的停止nginx
7 p$ b& r. y1 \/ C( x; |. s% X* {' x 如果遇到报错:
1 C' ^9 x0 S6 x5 F! O& H. E bash: nginx: command not found  J3 h: u. k$ E/ U7 k! ?3 K
有可能是你再linux命令行环境下运行了windows命令,
- B) C( {, G: @5 L9 |2 b6 d 如果你之前是允许 nginx -s reload报错, 试下 ./nginx -s reload
% F+ @. _: E- y2 v9 r 或者 用windows系统自带命令行工具运行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-11 02:37 , Processed in 0.088729 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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