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

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

[复制链接]

334

主题

517

回帖

3394

积分

管理员

积分
3394
QQ
发表于 2023-5-23 17:31:14 | 显示全部楼层 |阅读模式
1.启动nginx* s/ J6 A2 Y% s2 y: x9 W
进入nginx安装目录执行
: Q9 _. q, h" \: g% J" j
: z# Y$ n* b! e/ v9 r./sbin/nginx -c ./conf/nginx.conf
  e0 {; \' [5 B! G2 U+ t. U# a 2.验证nginx配置文件是否正确# G4 x# \) W* T9 d  b
* K- {" ]! z0 Z7 H7 z( n. u6 z
方法1. 进入nginx安装目录sbin下,输入命令& I5 n1 Q( f  B$ ~
8 k- ]6 Z7 b" k& M5 |
./nginx -t1 R( x4 O# v9 N; ?
回显test is successful说明配置正确
6 ]6 _  L$ i) V; x
4 [* i9 P4 `" `0 r: L: Q3 q& x方法2. 在启动nginx命令 -c 前加 -t7 [7 ^$ ?( s1 Q) O' j
! w* G6 h( e. D( ~3 Y
./sbin/nginx -t -c ./conf/nginx.conf5 f, J; d$ S7 R
3.停止nginx
4 x( y8 D6 Y1 O' |* j方法1:, z6 }: ]. ^9 f& h8 T

* F7 R  a- o( ]$ X& O强制停止:
: g6 A3 P! h7 b  {0 W; ^, l/ Q. N
1 z( K7 o# m# Y* h6 t! g./sbin/nginx -s stop) y6 ^% Z" n& d) ~; \3 I
处理完请求后停止:
9 q+ p' s( b. p+ S' C
. G+ ~4 M9 y' j) E/ |! ]% ~- k6 n./sbin/nginx -s quit
, S- v5 x' T" R8 f. y( v' G方法2:, a& E' P/ w) D2 `% G* Q2 X

- w, W6 q* u  b% _4 o  |/ k* }9 dps -ef|grep nginx6 N4 k8 @& c" {3 U
找到对应的nginx进程号
# D( M2 l! g( q7 H! q- u8 n8 P+ d6 f8 |/ ^0 R
正常停止:' v  Y3 Z& W0 ^
, Y# m1 z2 ]/ `# O* E
kill -15 进程号
. _! `6 K5 H' {3 W3 \& J- ^强制停止:
8 j+ e( k9 p. U: |. g' l* |! L, F2 h4 t' |. ~; {
kill -9 进程号
# U4 V5 r3 ^0 G" V9 T9 ~. y/ I4.重启新加载nginx配置文件; o/ e6 \! Y" [
方法1. 进入nginx安装目录执行4 P7 P- `4 R, ~2 a
/ G: H4 i  n+ ^# J! q  C% R: n3 t
./sbin/nginx -s reload9 `) R6 h* X: @0 q8 g" x
5.重启nginx服务
- K% @5 j. Y7 M5 g  u2 ~( z方法1. 进入nginx安装目录执行/ j+ E# B. b( R# L
4 }- F1 e4 f6 L1 ?0 t0 U/ U2 |
./sbin/nginx -s reopen
4 |8 ^! l& }- f7 j5 c4 R 方法2.查找当前nginx的PID进程号,并kill
- N; E1 Y; t7 ]" E' i, u
0 v6 T" o) @1 S) lps -ef|grep nginx2 ^5 Z* A) Q2 I" T: a
找到对应的nginx进程号,进行3 B1 B1 Z" \5 I, ?; p# H* r2 X, E
! `0 W1 B* \) J9 i
kill -HUP 进程号. T% C% e& h8 S) Y/ I% |. }( i5 z- P

! t$ o- B7 F5 R: j& F
  b+ O: T) F7 Nkill -1 进程号/ ?2 d8 u2 |# Q6 ~. _/ n
实现重启nginx服务
3 V! b( M0 \* b8 K- x3 ]+ l' M
7 D* c2 p4 @) g7 p, D# | 6.查看nginx版本信息8 I/ c* W; v( r3 a2 i/ ]( J. R6 Q
1).只显示版本信息, d" \/ U2 `. w- d7 N4 P
4 L  f2 I9 V! y' }$ }% k2 q! K. L
进入nginx安装目录执行
, I8 ^3 c8 K% T! ?/ o+ S1 `# R0 X  z6 E8 E' |) B' a
./sbin/nginx -v
$ A. N' d0 K" U  Q3 r 2)显示版本信息和配置信息
+ d% `8 o8 A: J
/ @5 U! `. Z6 A- _7 d进入nginx安装目录执行
% B2 m: [7 `1 V0 a7 g3 A
: z$ J; c* i$ E8 K) `3 [./sbin/nginx -v
回复

使用道具 举报

334

主题

517

回帖

3394

积分

管理员

积分
3394
QQ
 楼主| 发表于 2023-5-23 17:32:35 | 显示全部楼层
#启动; P' {: r6 c, P! y
#1.直接启动# b6 M5 D% A2 Q2 `
#进入nginx目录,执行启动命令
) M7 K* c' w( ^$ A! acd /usr/local/nginx/sbin
. c' d$ p1 ^! V./nginx- A: a* ~8 V2 k. F$ ?
# 或者直接
+ }2 Y2 O; N! G/usr/local/nginx/sbin/nginx
7 }* O$ ]7 N3 V+ t" h#2.指定配置文件方式启动
+ }) A2 Z/ l7 g- I  S#进入nginx目录,执行启动命令: z* a" W. s. p9 y1 {  R1 L
cd /usr/local/nginx/sbin9 C3 Q- X, G1 X" p6 z
./nginx -c /usr/local/nginx/conf/nginx.conf
0 @% {: t3 j" U" d  Y* S#或者
9 W8 N$ d, ]2 Y, I: c1 _- U& }0 ]0 S1 Q/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf# K" V2 i. a) X) r3 }5 J  A& |
回复

使用道具 举报

334

主题

517

回帖

3394

积分

管理员

积分
3394
QQ
 楼主| 发表于 2023-5-23 17:33:07 | 显示全部楼层
检查ngnix配置文件
$ z: @. I! C  l" K
9 n6 i5 F* V( r9 W4 k$ e#进入nginx目录- N  z" r0 z( q) I
cd /usr/local/nginx/sbin
( ?6 \6 }% ?& p: G; H2 @8 g$ p  B#检查配置文件是否有语法操作
% }$ D6 m% n- t" ?/ }./nginx -t3 w6 j4 [# Y( ^5 u" }
# 或者显示指定配置文件2 l: m  b; W7 A$ p/ f6 H8 v3 U0 r
./nginx -t -c /usr/local/nginx/conf/nginx.conf# o/ S$ P( ]/ z7 n2 R, u  g' B2 k" ?
回复

使用道具 举报

334

主题

517

回帖

3394

积分

管理员

积分
3394
QQ
 楼主| 发表于 2023-5-23 17:33:51 | 显示全部楼层
平滑的重启,修改配置后,重新加载配置1 \) G, @9 s" o- E  E" s- k
% C  ^1 m' f. Z$ y0 A6 l
#进入nginx目录! D- a* M8 E0 |! [# n) s% M' E
cd /usr/local/nginx/sbin+ n3 o, V& S4 w; {
#执行重载命令. w5 }2 Q2 W- r3 j# j
./nginx -s reload0 }# d, [) X7 \( q' H, v& P; h
- Z, p( n& Q. d) c$ P' y  h- P
nginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制。/ q# f* X4 h, V* z5 \* q
nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件1 a! G. _' W. ]$ b; g! t9 O7 }* ^
3 a, i& j4 v) A9 G  i8 P$ T" J
Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
6 w5 ?0 Y9 e: K) G) A% Q8 SNginx启动新的worker进程,采用新的配置文件# E+ k- d+ s" n" T) {) p
Nginx将新的请求分配新的worker进程
. W% F# n" [9 p, _4 Y3 l: j3 ~6 }Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
7 b6 S# P; i5 A8 J1 A. m; k重复上面过程,知道全部旧的worker进程都被关闭掉。
5 R& o3 Y5 c* x所以,重启之后,master的进程号不变,worker的进程号会改变。
回复

使用道具 举报

334

主题

517

回帖

3394

积分

管理员

积分
3394
QQ
 楼主| 发表于 2023-5-23 17:34:10 | 显示全部楼层
关闭nginx5 ]: k7 C7 Q$ [! O  f

. u6 o$ i' o, k2 k  f#进入nginx目录1 {0 x! F' y7 U7 A! s1 m
cd /usr/local/nginx/sbin$ X- ~4 M2 ]2 n  t' h9 L: u
# 快速停止nginx4 z* l2 g% J# z* [
./nginx -s stop4 p" j6 D0 w9 |# j3 G9 ]
# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx
6 P6 C  `2 s7 \) M./nginx -s quit
; K) v! V1 D$ w- K
回复

使用道具 举报

334

主题

517

回帖

3394

积分

管理员

积分
3394
QQ
 楼主| 发表于 2023-5-23 17:34:32 | 显示全部楼层
reopen重新打开日志文件0 S. |2 o6 C0 \+ r; h" G9 x

1 e' y  O% n6 k; H( t0 Y. n" f2 q#进入nginx目录
4 s3 c- G' Z8 |! Jcd /usr/local/nginx/sbin
1 S% c( {  Y& h) I# 重新打开日志文件$ ?8 n, c1 u8 w9 f: x
./nginx -s reopen  B' S& ?8 i" |# N8 H
回复

使用道具 举报

334

主题

517

回帖

3394

积分

管理员

积分
3394
QQ
 楼主| 发表于 2023-5-23 17:34:53 | 显示全部楼层
当需要切割 nginx 日志文件时,我们需要用到 nginx -s reopen 命令,用来完成新日志的生成。/ P( T% i, |! O1 e- k/ \
当日志文件太大时,一般我们是按天切割文件,也就是按天做个分类,每天的日志放在一个文件中,并用日期命令,方便日后查找。0 v2 k% A& a, S3 _/ ]" g, V
但时我们简单的把文件移动并重新命令是无法及时生效的,因为在 linux 下的文件句柄,文件在被打开的情况下 mv 移走文件,操作这个文件的进程还是有这个文件的信息,原进程还是读写原来的文件,简单的 mv 无法生效也就无法完成我们想要的文件分隔。$ }3 @5 I- u* T* h; z% S
一般我们需要两步:; K- b! n. R# I: f
" C# C2 X2 K/ e& T' N9 z; X/ n
移走文件并重命名+ u3 D# h' `' |; C
利用 nginx 的 reopen 功能,完成新日志文件的生成。& p0 p# b; `) l% A
参考地址,感谢博主分享
回复

使用道具 举报

334

主题

517

回帖

3394

积分

管理员

积分
3394
QQ
 楼主| 发表于 2023-5-23 17:35:39 | 显示全部楼层
其他命令重启、关闭nginx
+ H" k- R' o) x+ n- X9 I, }  _9 A2 H4 r
# 查看进程号,下图  master的为主进程号
1 T9 s& t2 y1 ?+ z' r. I3 Sps -ef | grep nginx, P* W, [9 g! u' v% K. `
#从容停止Nginx& x! K, }# V; @, g- \  n  J
kill -QUIT 主进程号4 r1 ]% d2 O- O" Y
#快速停止Nginx
) {, x0 P/ F8 D: ckill -TERM 主进程号6 M5 ^* z+ P* ]
#强制停止Nginx
  U- ~$ x, q) Y: Ppkill -9 nginx
6 H# J1 C- |) ^' @; y. P- a6 m" Z. g5 w#平滑重启nginx:" ^; |6 {1 I5 u- K$ Q
kill -HUP 主进程号
! g1 b" _4 r- P; d& U
回复

使用道具 举报

334

主题

517

回帖

3394

积分

管理员

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

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

1、启动:
) H0 b1 H/ c& j+ r0 ~6 k" f6 d5 @& g  Z( M1 q; C4 G" _
C:\server\nginx-1.0.2>start nginx: ?# i2 w* q, }0 i; }
  l- I2 C+ z0 H
' g) j! o' r7 X% t4 m5 H
2 w3 @+ E% Z) L! j9 P
C:\server\nginx-1.0.2>nginx.exe$ S+ ^- U# r7 B. O( O

8 a& \$ e/ o0 P' K  C注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。
7 b. x  Q) }' d+ [4 [) P! q( Q& l  r. J; X: E
如果需要特殊设置nginx的配置文件路径,可以这样执行start nginx -c conf/nginx.conf5 W2 R. A4 K# `

9 g% ^0 L0 N; `5 c7 V$ u+ |2、停止:
- m0 c2 H1 D" `! ~; k
- l5 {0 c5 a+ F* HC:\server\nginx-1.0.2>nginx.exe -s stop  T; U1 Y" T. L- r) @
$ }$ M8 d5 c) w8 h. w

7 A5 A; D9 v) B( [( E
7 O5 ?6 l. _: }( A0 ~( MC:\server\nginx-1.0.2>nginx.exe -s quit
% Y/ g0 k: N' n0 |6 a+ }
, Z0 U" S' `9 v0 R+ c/ A1 P注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。3 {' H' v+ g4 h. B7 q

2 K# v0 n- J8 o( L, x执行 nginx.exe -s stop或者quit命令是不是不能删除进程?查看进程开了一堆nignx.exe
0 t4 ^/ ~& Z  ~: `# n, l
! c# g; B  i# U+ l3 @还有80端口在Listening,并且浏览器F5刷新还能访问页面,可能nginx.exe版本或系统的原因,用. p! p/ O4 N( K* D: [. I

1 j6 v7 G2 l( w2 K0 {$ Jtaskkill /f /im nginx.exe > null 杀死nginx进程4 {8 A4 L" t; C

" u" i2 c/ E- c3 I7 q3、重新载入Nginx:6 e5 G8 u: N. L: r

: f% I6 p6 y+ q  O) C* q( v% KC:\server\nginx-1.0.2>nginx.exe -s reload
$ e4 w( N$ o0 u" Q4 J
& L" t8 X+ `3 k3 x当配置信息修改,需要重新载入这些配置时使用此命令。
. y9 X$ ]2 z" u% c; w4 M+ G$ w5 [  d  J* t
4、重新打开日志文件:
  x' ~. i" k/ y/ C* N5 |6 ~% B5 ~* ^. v, U3 x7 @# P
C:\server\nginx-1.0.2>nginx.exe -s reopen
: D0 j5 e7 H  y8 e; D/ |& |: d! f  t+ g, s" Q9 z4 m
5、查看Nginx版本:* _1 }2 `1 }" e; E# S2 ~0 U

0 H* T, q6 `5 @5 @/ K# N5 D& k+ `C:\server\nginx-1.0.2>nginx -v! c# v2 O) ]( X* b5 y' \$ l' ~
. E3 n& H* d2 m* b; M; M4 g& C" S
nginx: nginx version: nginx/1.0.2% E+ g- x0 ~* K
3 L" N3 `8 p$ R1 [% P. H% e
+ J4 g; s- s5 x& n$ `6 k1 T, _- ], K
8 O& J# k' x' X! h( r2 L) J$ c
C:\server\nginx-1.0.2>nginx -V
. A$ ]% f9 |$ F+ C* [; R! g- B
: L& P$ `! E4 u% M9 O0 Jnginx: nginx version: nginx/1.0.2
& [$ s+ e6 k* M; S: @8 W; T; r$ H8 x- N* `4 l* \  |
nginx: TLS SNI support enabled
3 S  _2 C/ R$ h+ B) z/ M6 J5 [, r
; r0 f  M; ?1 B5 ~3 L7 Nnginx: 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
" N# G  E2 U6 [6 p7 n6 M& e# y/ \' [. L6 `1 U- S
注:v只是简单显示版本信息,V不但显示版本信息,还显示配置参数信息。6 r* }9 V  Z! x, {+ A* E* {

' w3 l* L% W1 ~/ N! Y+ a+ I
/ ~  z2 q8 r9 a3 N6、测试或载入指定配置文件:( @# ]2 A4 f! `( @' `, ~- @' o

- K5 y1 f; @! d6 f8 F: M3 g5 S  J注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:+ T/ C9 w7 L3 S
: X! v$ R5 W- ?1 Y$ v7 s" f
C:\server\nginx-1.0.2>nginx.exe -t -c conf/default.conf! M4 g5 t3 @. k/ X2 s

- \% a9 q7 x$ b7 Q. R4 C- Znginx: the configuration file C:\server\nginx-1.0.2/conf/default.conf syntax isok
9 H0 S/ \4 Y1 F. k$ }
# R# I1 _( p: q% h; f) \nginx: configuration file C:\server\nginx-1.0.2/conf/default.conf test is successful4 x$ K9 W- I. x

9 l+ c" S7 ~% {' A: ~' r载入指定配置文件+ y) x- _, X; ?
' w/ H" ]+ U: }4 D6 f
C:\server\nginx-1.0.2>start nginx.exe -c conf/default.conf
; R% T, N/ @8 C$ u! K" q4 f
; x/ b9 G* @# |5 i4 I* I
回复

使用道具 举报

334

主题

517

回帖

3394

积分

管理员

积分
3394
QQ
 楼主| 发表于 2023-5-23 17:38:36 | 显示全部楼层
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程
" U6 l) N' h0 t 在nginx.exe目录,打开命令行工具,用命令 启动/关闭/重启nginx
( |6 a6 l/ o- G1 V7 g" A start nginx : 启动nginx6 B- G1 e! n, \; K- s3 z! ]2 m# V
nginx -s reload  :修改配置后重新加载生效
( ~$ P( w  |- m% H! o nginx -s reopen  :重新打开日志文件
4 m! E5 t! l/ ] nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确
1 U4 n$ j6 e8 w5 k7 J       关闭nginx:
& F, J) i" \- b0 \' b0 n nginx -s stop  :快速停止nginx
2 \7 b4 k, R$ S& ~# G2 { nginx -s quit  :完整有序的停止nginx6 I. f+ k! u0 f
如果遇到报错:# W, T# C3 U# i$ E0 s0 k0 y
bash: nginx: command not found
2 i# Q- u+ \4 _ 有可能是你再linux命令行环境下运行了windows命令,  Z' B) g3 H$ |. j( P
如果你之前是允许 nginx -s reload报错, 试下 ./nginx -s reload; T5 k: @+ S! W
或者 用windows系统自带命令行工具运行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-30 00:42 , Processed in 0.081295 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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