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

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

[复制链接]

330

主题

510

回帖

3332

积分

管理员

积分
3332
QQ
发表于 2023-5-23 17:31:14 | 显示全部楼层 |阅读模式
1.启动nginx5 E) p+ ]9 N  L8 r" w+ D
进入nginx安装目录执行
3 h' i: y& W0 V. U; D3 R2 k& j0 g' A4 q
./sbin/nginx -c ./conf/nginx.conf& T0 H' a8 z( d& A" u% e! z
2.验证nginx配置文件是否正确; C3 Q5 X7 Y. l* O. S
) F# t/ g4 w" @) e* i# H
方法1. 进入nginx安装目录sbin下,输入命令) E* ]; b- J; y0 g
6 Z$ y8 P! d4 `- U; m" @. m
./nginx -t+ P' r; G2 h$ a6 F% y) w
回显test is successful说明配置正确
: g8 `3 D& ]. {2 E2 j) `3 f7 j, e0 w. {, F
方法2. 在启动nginx命令 -c 前加 -t6 z; q9 ?8 y* h7 p4 w9 D& z
7 y7 q* v: o3 J6 M( |8 v: |0 C' @
./sbin/nginx -t -c ./conf/nginx.conf
4 Z: N' s. N6 ]4 h9 V. ?9 n! Y3.停止nginx
2 }7 H( L5 t) t方法1:: {3 B, h8 H8 X6 C6 z

5 a7 O. i8 M9 J5 ~强制停止:
' D; g, s6 M9 i% f8 X: ]
+ x1 Q% l9 }# v! G6 o./sbin/nginx -s stop
4 S2 Z8 V- f1 g3 R1 _3 M/ V6 l处理完请求后停止:  N6 r; `! a2 d3 ^
) I, D% S( l7 j6 p& I5 K* ~
./sbin/nginx -s quit* [8 U0 V6 {% y. W- g1 D
方法2:
. @+ _, z1 a; B. ^6 |+ q: A! S# o( ~
ps -ef|grep nginx
+ N, C  r8 d" g) \* a找到对应的nginx进程号8 T( J' z8 X/ g. @2 [

9 S) D, \, t; m2 M正常停止:
$ v8 |& S4 M! ~* E$ d: z
0 c, X5 J  \3 V+ e+ A1 f7 m# T2 ~2 Ykill -15 进程号: }8 m  K! ~/ x2 b5 L7 `
强制停止:
5 l) D1 x: z7 P9 B5 J/ n
5 j8 O6 L1 K/ bkill -9 进程号
1 Z& a$ q+ T% V+ ^' Y8 S4.重启新加载nginx配置文件# o: h3 E7 _: g6 w7 i
方法1. 进入nginx安装目录执行
% d7 l6 z0 R" q/ b4 m$ a+ R$ c4 y0 Y$ Q2 t& O+ }
./sbin/nginx -s reload6 [' d; S7 f$ I6 P. ?
5.重启nginx服务
1 S: B# s# w: e方法1. 进入nginx安装目录执行
, C% I6 N/ J1 n% D6 o' [' i8 a# M3 {% b/ W& t
./sbin/nginx -s reopen& r* g: F& }9 C& W1 }  z( E
方法2.查找当前nginx的PID进程号,并kill+ [- d0 }, [1 ?6 d1 Z+ F) B

" H7 S% ]5 W4 Fps -ef|grep nginx
. G( @: p, L0 Z4 w) e0 F; {6 P找到对应的nginx进程号,进行' h! u4 L5 H$ U/ e: Q

6 |* S7 u4 [- ukill -HUP 进程号6 i6 b( o# ]; i0 B$ A( d
, O2 S1 K" W  R/ h' ]
& h. `) R3 I# S  `
kill -1 进程号
' W# C8 w# W( _9 ^实现重启nginx服务
; u" k$ a( Q% L6 }7 U
8 x' x* F3 j& e7 F 6.查看nginx版本信息* K: d6 Y/ n6 v- \& w, k
1).只显示版本信息/ w8 A- b; P. x" ]4 m' v4 ^9 a& R
; N& M8 ~# z+ s' G
进入nginx安装目录执行( p+ r. h' }  O& X. x" _
. S( j7 W8 ?% m" N% Z$ X. q- l& \
./sbin/nginx -v
# M, k+ h1 g( x; @$ Y: ~& ?( I 2)显示版本信息和配置信息
1 z2 x5 Z7 k  L7 ~1 B+ H& R1 e: X5 n1 V" E4 ^
进入nginx安装目录执行; P8 P* a4 O; \  z) w8 F
5 i* F+ K1 \8 T; u- N! K
./sbin/nginx -v
回复

使用道具 举报

330

主题

510

回帖

3332

积分

管理员

积分
3332
QQ
 楼主| 发表于 2023-5-23 17:32:35 | 显示全部楼层
#启动
+ u# T2 y$ `! B1 L#1.直接启动% L% u3 W" k7 z6 l3 n& }( X# F. c7 R
#进入nginx目录,执行启动命令' _: ]3 p* ]# {( d. X/ a# C
cd /usr/local/nginx/sbin% C. d5 x/ O- B$ b
./nginx
! k1 V! \) M  m$ f# 或者直接4 w* y* V. g: P' p) E  n6 T
/usr/local/nginx/sbin/nginx
5 R% B6 s! t" _+ D#2.指定配置文件方式启动) W3 Y- F1 [5 u0 p! z
#进入nginx目录,执行启动命令
5 F7 ~  Q4 U: Y6 dcd /usr/local/nginx/sbin* A4 Y+ u- j6 c1 W+ S
./nginx -c /usr/local/nginx/conf/nginx.conf
9 U# j( h+ j7 ~% @! U; [- l#或者
. r2 K  \# C9 M/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf8 H! u) p& ~  q& V) S4 Q% n
回复

使用道具 举报

330

主题

510

回帖

3332

积分

管理员

积分
3332
QQ
 楼主| 发表于 2023-5-23 17:33:07 | 显示全部楼层
检查ngnix配置文件
+ b# p1 t4 Q; t9 @- v6 f! k
/ d2 C/ I  g8 o# z: T! N#进入nginx目录
* n; }/ T6 k" ?) ]& ^cd /usr/local/nginx/sbin/ [$ l- j3 @6 ^! r, J* t) d
#检查配置文件是否有语法操作
4 j8 J2 r1 G& z  z./nginx -t' Y7 g  l0 }( t
# 或者显示指定配置文件: g7 s* l% A4 p' Q
./nginx -t -c /usr/local/nginx/conf/nginx.conf. k# |# ~/ h  l
回复

使用道具 举报

330

主题

510

回帖

3332

积分

管理员

积分
3332
QQ
 楼主| 发表于 2023-5-23 17:33:51 | 显示全部楼层
平滑的重启,修改配置后,重新加载配置, p2 @+ _. M; @! i, Z% Y. c2 l

9 o8 P4 W' [: Q3 s3 y) b- T% E# x#进入nginx目录
0 Z* a0 @1 H7 Y$ N1 }cd /usr/local/nginx/sbin
5 G) X, ^4 C' E; {3 H#执行重载命令) k5 b5 i' J! q1 r2 m: f4 f
./nginx -s reload1 I2 s& [; u4 ^& G0 k
5 v3 N# X) f/ S/ f; k6 P5 C
nginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制。: A& w2 v$ L2 u# ~$ v4 y$ }
nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件
  X1 ]" M& t) |3 S! W$ q: U* A
Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
( o; c. A2 `# {' u1 b4 z7 q& gNginx启动新的worker进程,采用新的配置文件1 O! q  q& g! ^6 x0 z
Nginx将新的请求分配新的worker进程' [8 l9 k# r1 v, {  g# R
Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程5 R) |# V: o. Q% p- P
重复上面过程,知道全部旧的worker进程都被关闭掉。7 _  k! t* D  H0 J
所以,重启之后,master的进程号不变,worker的进程号会改变。
回复

使用道具 举报

330

主题

510

回帖

3332

积分

管理员

积分
3332
QQ
 楼主| 发表于 2023-5-23 17:34:10 | 显示全部楼层
关闭nginx
2 f$ X0 t; A, G7 Y. I( V
! n# p2 X9 e  i( B0 k#进入nginx目录$ J! e" R2 g# D
cd /usr/local/nginx/sbin
9 ~, y9 g4 o) n' R# 快速停止nginx
2 d" ~' p! @1 h5 y5 T./nginx -s stop9 T6 o9 l. r/ q+ S  `/ Z3 b
# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx
) q" m8 w/ `) k' [./nginx -s quit3 N: [# Y& U- b1 R( }
回复

使用道具 举报

330

主题

510

回帖

3332

积分

管理员

积分
3332
QQ
 楼主| 发表于 2023-5-23 17:34:32 | 显示全部楼层
reopen重新打开日志文件
8 `3 Q8 r4 H% Q6 {' H8 J' Q
" C: ~* Z8 o/ j! R# P#进入nginx目录# U, q& s" y, f4 w1 T2 j
cd /usr/local/nginx/sbin
2 i; R0 x+ g5 T* V# 重新打开日志文件* M. F0 B3 H4 {! o1 P+ F6 |* V/ {
./nginx -s reopen! m' z+ ]1 r& h! y9 f- j3 H% u
回复

使用道具 举报

330

主题

510

回帖

3332

积分

管理员

积分
3332
QQ
 楼主| 发表于 2023-5-23 17:34:53 | 显示全部楼层
当需要切割 nginx 日志文件时,我们需要用到 nginx -s reopen 命令,用来完成新日志的生成。
- K4 ?/ I0 V& r5 w+ Q7 k0 _当日志文件太大时,一般我们是按天切割文件,也就是按天做个分类,每天的日志放在一个文件中,并用日期命令,方便日后查找。1 J) r7 E. C' x# D
但时我们简单的把文件移动并重新命令是无法及时生效的,因为在 linux 下的文件句柄,文件在被打开的情况下 mv 移走文件,操作这个文件的进程还是有这个文件的信息,原进程还是读写原来的文件,简单的 mv 无法生效也就无法完成我们想要的文件分隔。& S) M( Q0 @+ h' z/ R
一般我们需要两步:
4 L/ L. l8 B5 x' \7 D, I5 E4 s: W+ T# p
移走文件并重命名
+ Q9 L" Q  ^- C( U: {  h利用 nginx 的 reopen 功能,完成新日志文件的生成。
& F; S' U; f( Q参考地址,感谢博主分享
回复

使用道具 举报

330

主题

510

回帖

3332

积分

管理员

积分
3332
QQ
 楼主| 发表于 2023-5-23 17:35:39 | 显示全部楼层
其他命令重启、关闭nginx) B6 ?) I, g/ @/ t9 J2 [2 a$ _8 Q

6 j5 m" n* {- H# 查看进程号,下图  master的为主进程号
( W% _+ N2 i& p% \ps -ef | grep nginx
! L  I: C5 q$ a2 p7 l4 ^#从容停止Nginx
! w/ G* j7 J% v8 S4 Ykill -QUIT 主进程号
5 D* `7 A, x2 N#快速停止Nginx
9 \* v' A! K9 B2 E. vkill -TERM 主进程号/ u; {' I1 y, P3 e, n
#强制停止Nginx
( O8 y1 L  n9 ^" rpkill -9 nginx) c9 O$ M4 u7 N0 e2 @  z
#平滑重启nginx:+ g; }& Y, r" b+ P2 Y
kill -HUP 主进程号
$ A8 W8 s+ o: O6 W, r
回复

使用道具 举报

330

主题

510

回帖

3332

积分

管理员

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

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

1、启动:4 z  }. u; E5 V
+ d( C& w$ h3 a5 p6 l
C:\server\nginx-1.0.2>start nginx8 K2 ^( h. d7 l2 G6 N
/ `- t* g7 ^* A# L" b

$ {9 z; x( C' O" J2 d
; B* Y$ Q6 ]( |5 ]. t; r5 G. \9 BC:\server\nginx-1.0.2>nginx.exe4 K7 Y2 E+ S  C2 s; Y- k$ k6 |

' @9 `( v  C" e' q& a: ~注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。
. W* u; @5 e2 y4 Y
2 H3 ?( @3 X5 L- ]如果需要特殊设置nginx的配置文件路径,可以这样执行start nginx -c conf/nginx.conf
5 p; W6 [! a7 Y9 u$ x/ A4 e7 I
3 ^$ q4 h5 j7 c/ C: g; k7 r; a2、停止:1 x6 F5 L7 K# F2 r, r2 \/ j$ H

; Z9 I& ^6 e& Y# c, qC:\server\nginx-1.0.2>nginx.exe -s stop( M8 w3 W( }% e' M; }$ {. f

4 f$ @# Z: D1 x7 E0 C* O  p1 n( j5 \1 x9 M- s
$ Y+ ^6 |! g$ j4 g
C:\server\nginx-1.0.2>nginx.exe -s quit! H4 w$ b  i# R# h) {. Y

  F6 V! T9 l# j. u$ }注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。4 q. [' p7 V+ \. Y, j; ^( Q9 a
0 u1 O( f( D0 _, B5 @
执行 nginx.exe -s stop或者quit命令是不是不能删除进程?查看进程开了一堆nignx.exe  w% s! k5 q2 z/ e( a
" G6 `9 K; I0 R# H
还有80端口在Listening,并且浏览器F5刷新还能访问页面,可能nginx.exe版本或系统的原因,用
) `* ^& }' }1 i: R
% I0 D' {3 o: H8 z1 V3 M: H, qtaskkill /f /im nginx.exe > null 杀死nginx进程
7 N& @7 `/ L) ~$ a& U  H% Q
; d: U' p3 h5 u3、重新载入Nginx:
1 V: q- o, t3 L' z# ~* T* r2 q% m" E2 k$ ^  Q
C:\server\nginx-1.0.2>nginx.exe -s reload
* t1 ~3 U( [( w0 p3 ~5 d) d
8 S. H- k% g0 I. Y, ~当配置信息修改,需要重新载入这些配置时使用此命令。
* g( ~$ e& d! @/ C' Z8 b
9 ^- m6 ~' c3 x: y' `4、重新打开日志文件:
$ Y. z: q6 p8 [. z! k; E
' `3 A# U8 V( |: yC:\server\nginx-1.0.2>nginx.exe -s reopen
; Y3 @6 n: t& p$ H( s$ b0 t: }# g: ]2 M$ k2 q
5、查看Nginx版本:0 R# @, y0 {# L8 [% t8 f, I

0 S& \8 B5 P. W6 t# j8 x. t9 dC:\server\nginx-1.0.2>nginx -v
: e6 I, i9 S/ z2 `& R
4 h# c7 x4 C3 fnginx: nginx version: nginx/1.0.2# _9 w9 ~; y7 `
  d) U; i' t+ A* c6 F! q

# }& B$ h" P# b3 T$ Z' ?% m) {0 B9 q6 y# c/ X7 u# ]  g
C:\server\nginx-1.0.2>nginx -V$ z9 `! y  C3 X+ f/ g$ P4 U
- w* c! \: x; F7 T; S" N. V+ S9 t" W
nginx: nginx version: nginx/1.0.2' C/ L2 B& l' H& x* _' V

2 A, g- D3 b0 j7 bnginx: TLS SNI support enabled
  [  d) q) }) G
2 N* y' x& N0 s" B9 }& W4 snginx: 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_module8 u3 V5 y9 t8 a4 h! G
9 [5 Q8 H+ [+ g
注:v只是简单显示版本信息,V不但显示版本信息,还显示配置参数信息。& j* I- w: Q! G* K

+ t7 ~" I0 T5 W+ n( q4 r( n6 t* I: O5 Q% h
6、测试或载入指定配置文件:. b. P7 N, E) _" X
3 N$ e4 d( Y+ s4 S5 `) Z7 Q
注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:9 M1 h2 n+ E. ^/ H# h
- Y0 Q8 C% H& q( e
C:\server\nginx-1.0.2>nginx.exe -t -c conf/default.conf
8 P$ l4 y" h) x1 c# H- d0 O* x$ {5 C4 F
nginx: the configuration file C:\server\nginx-1.0.2/conf/default.conf syntax isok
, ?6 X+ h' I6 H% F# [+ v6 Q
6 s) X, B6 F& H9 f6 dnginx: configuration file C:\server\nginx-1.0.2/conf/default.conf test is successful+ H! p% l7 B8 ?8 o1 w, T  }$ x# k
4 b( L, q0 h+ y+ z% ?
载入指定配置文件5 O, S7 Y* a1 O# Y4 u: L0 b
8 F+ y1 l5 ^- M) v- I8 b
C:\server\nginx-1.0.2>start nginx.exe -c conf/default.conf
. W2 ~. ^8 d" ~- B. m; g, r% h! H2 U: ~) o* B: s  B
回复

使用道具 举报

330

主题

510

回帖

3332

积分

管理员

积分
3332
QQ
 楼主| 发表于 2023-5-23 17:38:36 | 显示全部楼层
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程
/ v1 X0 R1 C* G; f( k 在nginx.exe目录,打开命令行工具,用命令 启动/关闭/重启nginx 1 S( J2 x- U% C8 p( C
start nginx : 启动nginx8 H5 m" }1 N) ~: X% U, @8 P- ?- y6 j
nginx -s reload  :修改配置后重新加载生效
" N8 _0 g4 |' N) Q8 z3 O( e nginx -s reopen  :重新打开日志文件
. o- N1 T/ d! {& |1 m8 j nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确
# L9 a0 f6 {/ ]8 D0 T       关闭nginx:5 X. u& _9 V6 p4 l" l" E
nginx -s stop  :快速停止nginx
' t* e' q0 b% U! B nginx -s quit  :完整有序的停止nginx
# Y5 a6 Y/ w0 _/ {: p 如果遇到报错:, h5 Z5 ~+ K. \1 _2 S8 d( p7 `
bash: nginx: command not found
2 V# T6 s3 o7 ~+ ]# q5 z 有可能是你再linux命令行环境下运行了windows命令,) E. P, B2 b: N- `$ `' |" M
如果你之前是允许 nginx -s reload报错, 试下 ./nginx -s reload! b% Z! p0 H0 M; {; Y( O
或者 用windows系统自带命令行工具运行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-3 21:55 , Processed in 0.072513 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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