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

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

[复制链接]

319

主题

484

回帖

3117

积分

管理员

积分
3117
QQ
发表于 2023-5-23 17:31:14 | 显示全部楼层 |阅读模式
1.启动nginx) J; L) Y( t6 X$ B; `& Q
进入nginx安装目录执行# `! n9 {, v3 r& v" s! \' ^; h* o
3 a7 A" j+ k4 x0 G( E4 |4 a' x
./sbin/nginx -c ./conf/nginx.conf3 {- x1 R# \6 T4 y- w) m" `7 |
2.验证nginx配置文件是否正确8 N, N3 p, s, o' y& n# {9 a( R

( K2 Q) ~: g+ A, Z8 H) T方法1. 进入nginx安装目录sbin下,输入命令
- d  n# n5 a% c* Y5 c6 K$ _* x8 W+ Y  t
./nginx -t
$ [' z3 i. L; |5 `* l9 B回显test is successful说明配置正确
% n: z# M! W' @7 H3 f( c' m
# b' R% ^# A7 y2 o  h7 {- x+ J方法2. 在启动nginx命令 -c 前加 -t# }' N2 M" Z2 A. F
- S9 c( L7 E% R' S% z3 m- X
./sbin/nginx -t -c ./conf/nginx.conf  I% C+ v! B8 i9 _. `
3.停止nginx6 N4 w0 g8 j( A: i8 G) m
方法1:
+ G3 s. d2 f1 w- T( p% @
3 N6 U9 F& E4 X( K8 \强制停止:
$ C& M, O( {, j" i! ~+ M5 @" `
$ ~; |3 P& [& Z/ Z./sbin/nginx -s stop* P5 X% `  d9 {0 x
处理完请求后停止:( ?( U$ L% t4 w, m  }! @# E
: Z! N& c+ D+ L; ?. u# T8 T
./sbin/nginx -s quit
/ P+ M1 g; C6 r4 o; H! P( t$ i方法2:7 ^+ m+ W! T+ e# I
; n1 g  L  {+ g- Q8 w; ^
ps -ef|grep nginx! n8 w  f  K# k0 q3 Y; E( I$ @3 V
找到对应的nginx进程号
3 Y: b2 A8 E- ]0 l) S' \6 Z; v+ \' i7 R: Y  U
正常停止:5 w7 f: P# a5 z; p1 d! ^6 V

+ W3 J/ s/ H' b9 S: r! Ykill -15 进程号' C& M1 S8 J" x& R
强制停止:: X+ E2 S; W- F# Z: K
! P1 ?5 \7 K/ P  c
kill -9 进程号
; K$ j: o. X% o4 `% ~* \4.重启新加载nginx配置文件
9 \, U+ c$ W  l7 }0 h方法1. 进入nginx安装目录执行
3 r+ s( e( m' [2 K2 `- H' a, ~( \" j6 n% s, }6 [4 m% O8 L
./sbin/nginx -s reload
% N: b" W7 A; B9 Q) U! e3 `. g& \$ a5.重启nginx服务1 z& P7 Z, F- a: [7 y; \5 Z
方法1. 进入nginx安装目录执行' _$ F) J4 b. m8 R; x" q7 r2 |) r, x
+ [& p% Z4 p7 h) a/ o
./sbin/nginx -s reopen
2 U, K, a) F8 t: H& y 方法2.查找当前nginx的PID进程号,并kill# c5 W3 b8 {2 x* @$ o

) x: Q. y7 E3 _5 i. lps -ef|grep nginx+ D3 e6 @6 x  p# P5 L( H, Q
找到对应的nginx进程号,进行& }8 m& A$ X5 L" U3 D: E( X

1 x  y6 g6 P! N* [1 ^' g2 r# k+ vkill -HUP 进程号
; V# z6 G& x$ I; w  S# E% _
* A, o) e* X8 I6 K% e. h
9 Y. ]1 ?/ N5 d; A8 V& K1 a( xkill -1 进程号
4 _6 q0 f- |3 g' Y' _实现重启nginx服务
) j+ Z/ i7 X# `) c) d1 D3 K+ g; E% X% v6 o) \" Z
6.查看nginx版本信息, y1 T% E- P5 T1 m
1).只显示版本信息) b% K) D6 J, H4 }. N% B! n

0 J1 x; r( P# Z8 G4 D% ]进入nginx安装目录执行
5 N0 F& M- T; K/ H4 q+ e
" v0 `; a6 Y5 ^( I! q./sbin/nginx -v) D( g- J, x1 ^/ m2 I
2)显示版本信息和配置信息% z8 \) V/ i+ d, s
# E; g$ w4 X6 B4 X9 C2 f' U# B) N
进入nginx安装目录执行# s! I; s! M$ h; v/ e: w" M

0 B, T$ h+ D; i5 x. N. k1 Q2 M' n2 ~./sbin/nginx -v
回复

使用道具 举报

319

主题

484

回帖

3117

积分

管理员

积分
3117
QQ
 楼主| 发表于 2023-5-23 17:32:35 | 显示全部楼层
#启动
+ l5 ]. G  ~! d8 M1 L#1.直接启动# c  Y, g$ t* J! t" P! Z
#进入nginx目录,执行启动命令
' }. p! l; L+ e& Xcd /usr/local/nginx/sbin7 B; K7 Z( e$ q! v, |0 D: ]
./nginx/ B$ r0 R1 k5 h  w8 G
# 或者直接' _' p3 c1 ~2 q
/usr/local/nginx/sbin/nginx
2 t+ m+ X5 \; d3 X5 y% B* U! ]' E9 O2 C#2.指定配置文件方式启动
: H7 G) {0 Y$ D5 ~8 g/ ^#进入nginx目录,执行启动命令
9 v" a+ y5 i! h1 g# c4 A% ecd /usr/local/nginx/sbin
3 @+ Z  C% V0 C7 t./nginx -c /usr/local/nginx/conf/nginx.conf
) O4 U! w& C3 J- j& Z0 x/ p5 H0 s! @#或者
1 K) \0 ], r* H/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
* V# }# G5 J6 o* z' C9 K# i, y
回复

使用道具 举报

319

主题

484

回帖

3117

积分

管理员

积分
3117
QQ
 楼主| 发表于 2023-5-23 17:33:07 | 显示全部楼层
检查ngnix配置文件  k4 h. S) l  c4 M0 A9 U

1 U7 ~0 x( h5 _* y! [8 }) E1 a#进入nginx目录7 K- |0 A) t; m$ v2 C3 i  {
cd /usr/local/nginx/sbin
3 [3 d/ ?1 }; z: _#检查配置文件是否有语法操作
) A6 H7 H4 R7 O* ]2 C7 p' w; ~./nginx -t
1 a) {9 A8 {# E+ p  w, s3 d' g  j# 或者显示指定配置文件0 i' a6 g9 L0 G6 J
./nginx -t -c /usr/local/nginx/conf/nginx.conf* S" ^6 R4 e! G5 ^9 X3 t* I
回复

使用道具 举报

319

主题

484

回帖

3117

积分

管理员

积分
3117
QQ
 楼主| 发表于 2023-5-23 17:33:51 | 显示全部楼层
平滑的重启,修改配置后,重新加载配置  S# ]+ A2 D' D; ?/ d! o* ]
& J5 w  \" P  {# g
#进入nginx目录% w* m7 K- W! B" F4 H
cd /usr/local/nginx/sbin
( R; Q9 Q  Y5 {) g2 m" V8 a+ b8 w#执行重载命令$ \" j5 Y/ l, w9 N
./nginx -s reload
: x: F" S  a4 ~6 Z
7 K8 x3 d5 U$ x7 k) vnginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制。5 ^3 n7 \( }8 ^- F! \) U
nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件
7 e! {; K0 u* Q2 Y9 {' |# D  k* [, v: k  T4 E+ e! _/ t1 I0 G
Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)0 J) ?7 R( d1 {0 Z
Nginx启动新的worker进程,采用新的配置文件$ m' [; {& C! {) h8 ^, e0 Z1 {
Nginx将新的请求分配新的worker进程
2 P; l, F1 g* j- _5 y4 p/ }/ J! J3 ONginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程5 `! S/ p( T2 w
重复上面过程,知道全部旧的worker进程都被关闭掉。( y# P+ q8 _1 c! |3 Z$ \/ [
所以,重启之后,master的进程号不变,worker的进程号会改变。
回复

使用道具 举报

319

主题

484

回帖

3117

积分

管理员

积分
3117
QQ
 楼主| 发表于 2023-5-23 17:34:10 | 显示全部楼层
关闭nginx
4 f# H/ D3 ]3 S# o) m3 e$ X7 H* _: Z, w. n4 M8 v; c0 Z
#进入nginx目录1 ]9 Z/ B0 F2 P
cd /usr/local/nginx/sbin
5 j7 P4 J; [  a* f) E. _# 快速停止nginx
% p* h5 z6 g1 z1 X./nginx -s stop7 ~! C4 D2 ]0 a: ~! b5 x" v# f8 V
# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx0 U2 `, b7 O& J
./nginx -s quit
+ R; V, ^  V% I: M$ W
回复

使用道具 举报

319

主题

484

回帖

3117

积分

管理员

积分
3117
QQ
 楼主| 发表于 2023-5-23 17:34:32 | 显示全部楼层
reopen重新打开日志文件
+ }$ i8 t, R! q8 r' M  u: C5 s: ?; F  T" ~' w8 N
#进入nginx目录" I3 h" X, m+ y1 ~
cd /usr/local/nginx/sbin9 V  m" a  s# |/ u) E# m
# 重新打开日志文件
$ D# f' R" d" x4 }) D, M: c./nginx -s reopen
) Y/ l! c, y! h# `) ^
回复

使用道具 举报

319

主题

484

回帖

3117

积分

管理员

积分
3117
QQ
 楼主| 发表于 2023-5-23 17:34:53 | 显示全部楼层
当需要切割 nginx 日志文件时,我们需要用到 nginx -s reopen 命令,用来完成新日志的生成。
3 Q# z. N7 d8 _; D* A: y3 h! J当日志文件太大时,一般我们是按天切割文件,也就是按天做个分类,每天的日志放在一个文件中,并用日期命令,方便日后查找。7 K, f3 Q; _: Q' q  Q
但时我们简单的把文件移动并重新命令是无法及时生效的,因为在 linux 下的文件句柄,文件在被打开的情况下 mv 移走文件,操作这个文件的进程还是有这个文件的信息,原进程还是读写原来的文件,简单的 mv 无法生效也就无法完成我们想要的文件分隔。3 }# A: \8 ?4 G% n$ r2 V' \
一般我们需要两步:
  V! r4 v2 U) h
7 B' F, M2 N% j' |- x移走文件并重命名
0 f! ~5 B9 n, _; @利用 nginx 的 reopen 功能,完成新日志文件的生成。9 f: y, g  }3 [
参考地址,感谢博主分享
回复

使用道具 举报

319

主题

484

回帖

3117

积分

管理员

积分
3117
QQ
 楼主| 发表于 2023-5-23 17:35:39 | 显示全部楼层
其他命令重启、关闭nginx
7 k) n2 _( V5 h" l* }8 p  G3 X
* r2 Y5 M8 r# L" U7 `# 查看进程号,下图  master的为主进程号
0 U- F% i: u% v: i: S% [5 s) }! W! Kps -ef | grep nginx
& l- C! L$ |/ N#从容停止Nginx, ~# ?0 Q! T( O5 p/ r
kill -QUIT 主进程号
4 \! ?" }% r4 Y$ A7 P1 Z0 H#快速停止Nginx! v4 R, ~, U0 Q# a( ]
kill -TERM 主进程号
& W( z! s" k6 |6 u9 i7 n6 ~* \# Q#强制停止Nginx
4 I# m6 w# ^0 e# h) kpkill -9 nginx7 r) k+ Y+ `2 _8 E4 d' \$ H
#平滑重启nginx:
& i5 i* v' B, b" n1 }kill -HUP 主进程号  ^; D, i0 g5 k, P# }
回复

使用道具 举报

319

主题

484

回帖

3117

积分

管理员

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

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

1、启动:
; S* K. G: u) j
: u. G, p. n* S& h5 O% gC:\server\nginx-1.0.2>start nginx
6 c1 k6 K) {) {- e
1 ~( q+ b" S0 P: N& ^, F9 d, \* z: S, B3 |0 B

% C  o2 M1 c6 _C:\server\nginx-1.0.2>nginx.exe
( G. S3 ^9 g$ I) \
9 S6 g  ?8 O7 }6 p1 I0 j& h注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。: u# F3 U  V1 _8 ^8 e
$ o$ f0 `  _! N7 W7 J
如果需要特殊设置nginx的配置文件路径,可以这样执行start nginx -c conf/nginx.conf, U4 t2 C: b1 Y

4 r4 `/ y1 i$ k$ M2、停止:
9 u) w# a2 z# X2 z) Y( x! v- I3 L+ v5 v7 R5 y% N
C:\server\nginx-1.0.2>nginx.exe -s stop
- g" y* z3 D! [: G& b  k' U$ H% E6 }4 l/ w% z

% r9 U, d4 r$ x' C( G$ G" q1 v" z( A
C:\server\nginx-1.0.2>nginx.exe -s quit0 T  B2 Q0 C7 e- D
  z0 B. j2 h4 O1 g
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。2 L8 ^# i7 K# e8 Y& c

. Y& v1 i- C) R0 v执行 nginx.exe -s stop或者quit命令是不是不能删除进程?查看进程开了一堆nignx.exe% `/ I6 [) q% R* i% X2 Z/ ?- o

9 x8 S% S: t+ R还有80端口在Listening,并且浏览器F5刷新还能访问页面,可能nginx.exe版本或系统的原因,用0 f# k1 T4 L# c: h8 T% R( E+ \& j3 V

5 M' ?1 l8 @; s# C0 Ttaskkill /f /im nginx.exe > null 杀死nginx进程
  t3 c2 g) u" J, c2 ?" _. t
: s* V# b; f- \- @8 X3、重新载入Nginx:
7 K) B. }3 E  C0 w4 e" x+ x7 H5 D) T1 _+ |7 ]* r  X% M
C:\server\nginx-1.0.2>nginx.exe -s reload
; k" }# L$ H) \+ ^+ L# t6 P# @& D
当配置信息修改,需要重新载入这些配置时使用此命令。
7 [) F' |9 K0 L- @: G/ f5 \0 a+ E/ j+ Q4 \0 A5 K; X+ Y9 u
4、重新打开日志文件:
/ `0 O1 V; m$ {5 ~7 D
3 S4 ]; u, g0 x0 G: \% jC:\server\nginx-1.0.2>nginx.exe -s reopen0 l7 n5 X/ g9 K

% }' ?; a9 Y0 W9 w( u$ c% x1 c5、查看Nginx版本:9 a7 Y$ W0 n9 f; x% e! r6 f
5 Q- i% e7 @4 _& G7 B% k
C:\server\nginx-1.0.2>nginx -v
6 @! h. o/ X7 a& T2 r: I% p
' D  ~3 m0 P1 w( Q, pnginx: nginx version: nginx/1.0.2) N# Z( g$ _. w
+ Q' ?4 ]8 a$ z3 }

% d: R% {5 u! g+ [6 O. Z
3 d7 c5 u+ m8 C3 e, pC:\server\nginx-1.0.2>nginx -V
+ V2 y( j9 Q8 Z$ H2 H. W# l- ^  E+ m, W4 O/ m: J
nginx: nginx version: nginx/1.0.28 ]+ j9 B% C1 O' o0 j
7 [7 e+ A9 u8 i
nginx: TLS SNI support enabled  v% H" x3 |1 e% ?* c2 l" m

6 z( _/ o' s8 L! N# |nginx: 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
9 I* L1 d: M/ }# w3 U0 n: Y2 Y, _& a+ }+ O5 d
注:v只是简单显示版本信息,V不但显示版本信息,还显示配置参数信息。: O6 U/ K- a6 N. x* C- ?: P

, _$ E" p1 p& e: j( O4 s
1 a, J) O2 h% ~* x& y- b1 l* e1 V: N6、测试或载入指定配置文件:2 U2 ^+ r0 ^/ g2 x6 V

0 D8 _; i" Z+ N注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:
' t* t" }" m0 w5 Z# S9 `# ^
3 W( j( @- R3 _/ pC:\server\nginx-1.0.2>nginx.exe -t -c conf/default.conf
) x/ ^/ s' [9 O
  c5 a. v: i7 B5 g1 t! `nginx: the configuration file C:\server\nginx-1.0.2/conf/default.conf syntax isok0 ]6 c! _  e( b
3 l( O" ?1 o- g1 I( `4 n  F
nginx: configuration file C:\server\nginx-1.0.2/conf/default.conf test is successful- j4 F% w5 x- O  {2 Z8 T, H
" k- ^) F9 `, E/ @2 R4 i
载入指定配置文件. J" t. E6 `0 J* c
0 b6 Y8 b# ~  f6 e! X
C:\server\nginx-1.0.2>start nginx.exe -c conf/default.conf. Y8 y# ^0 }; V& _/ D& W

0 {; n& n0 w  c" p# a9 J/ e
回复

使用道具 举报

319

主题

484

回帖

3117

积分

管理员

积分
3117
QQ
 楼主| 发表于 2023-5-23 17:38:36 | 显示全部楼层
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程6 J9 C+ Y: o+ \4 M  F! Z: {) u
在nginx.exe目录,打开命令行工具,用命令 启动/关闭/重启nginx
: l& z- `4 j) ? start nginx : 启动nginx
& c7 }# x" r8 ]. i$ f0 n nginx -s reload  :修改配置后重新加载生效
) f4 S1 b' @" J: T nginx -s reopen  :重新打开日志文件4 Q# i9 D. |6 k7 m$ w8 o2 |
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确, n$ J3 U$ A, O( n1 D
       关闭nginx:
2 l+ n% `) o* X' [: S1 g nginx -s stop  :快速停止nginx
; I0 w4 _* u! p nginx -s quit  :完整有序的停止nginx
" F! x; n7 q/ d% ?2 b  n 如果遇到报错:0 F7 a6 Q5 Z( r+ u5 S
bash: nginx: command not found/ x/ z+ ?0 h5 C& F
有可能是你再linux命令行环境下运行了windows命令,  d! f. r! l1 f" Y5 Y5 y$ {
如果你之前是允许 nginx -s reload报错, 试下 ./nginx -s reload/ q+ F1 Q* F3 n1 L9 `2 g
或者 用windows系统自带命令行工具运行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-10 14:09 , Processed in 0.091672 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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