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

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

[复制链接]

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
发表于 2023-5-23 17:31:14 | 显示全部楼层 |阅读模式
1.启动nginx
2 J3 _4 H9 M! A- Z" \6 q+ ?进入nginx安装目录执行
: \; u/ m- C. T0 K# V( F- k/ l3 c9 e8 j# n
./sbin/nginx -c ./conf/nginx.conf: Q& j6 m/ v5 l5 p
2.验证nginx配置文件是否正确
1 u& }: {9 U/ ^1 P6 @5 A# _9 o* t/ Y( E' D: _  D  L% k
方法1. 进入nginx安装目录sbin下,输入命令
+ w6 j1 l5 x- q& f5 ?' K7 m6 n# I* d  X1 V
./nginx -t
# R# g: ], o, G  G! ~回显test is successful说明配置正确
. H+ W& L* S3 |# J1 v( A
) B) i: R- Z7 C& c- l方法2. 在启动nginx命令 -c 前加 -t
/ D; [) K+ m0 n- B4 T) }; {! H+ K/ ^  @3 n( ~
./sbin/nginx -t -c ./conf/nginx.conf
* n8 k! f+ c" D3.停止nginx: U; n; O9 \( o8 f4 T
方法1:
& Q6 i) k0 w: H
) c- O0 }2 l. f  h强制停止:
/ ~3 K0 T9 M% f* F& c. s- i$ @# T9 q# Y: {3 O
./sbin/nginx -s stop& X1 `, \* B' d% y! L8 K
处理完请求后停止:
- a* b" N3 M. U+ o2 v( F$ j3 j
& }. S+ [" l, m, G9 u./sbin/nginx -s quit" B' J6 b+ m$ e5 d) k$ U
方法2:2 F/ L0 p3 y, b5 [5 \/ c$ ^- W/ Q; |
0 X& `7 ~; U, U9 |0 b
ps -ef|grep nginx
' C" \7 M, M1 V# W& ^5 M* o2 n找到对应的nginx进程号2 p/ [+ k& F8 N3 m9 ]/ A8 U  S

0 ]+ a7 O" B- h1 W( J* z, c正常停止:
: y+ L* [3 C' W
0 p% J$ ?( m; {% _& u4 wkill -15 进程号1 ]; Z7 K& W. u4 z. ^
强制停止:
+ O1 U% f1 E% C9 p) t+ D' \. A! [! K3 k
kill -9 进程号
8 D5 A, N) M. g4.重启新加载nginx配置文件% Z  g, s# [7 ?4 C, h
方法1. 进入nginx安装目录执行8 O) x; C, q3 y& T5 n6 L/ ~
4 T5 {6 t/ d  x  S. ]/ f
./sbin/nginx -s reload# i6 H" A% N9 I$ b
5.重启nginx服务
+ f* U3 d: B4 V方法1. 进入nginx安装目录执行6 t& I$ c: k3 ]- i+ j8 h" |

; K/ a! N, J) h9 J./sbin/nginx -s reopen
* \' ~0 m; d; V& Y+ `, a. J0 G 方法2.查找当前nginx的PID进程号,并kill
* G8 {  K* e9 O5 r9 d4 ]/ M: I3 o% e! y- j8 R- W9 z
ps -ef|grep nginx
1 k! [; i* S& l; K0 n( ]找到对应的nginx进程号,进行% g3 K) W5 _" j; O/ J; h/ K

  {8 G( I: g% }1 dkill -HUP 进程号
8 E9 P: w' N" G8 l3 I! `) L" E* j( N9 A' L/ M

0 C* ]1 b3 [6 R/ {/ G0 ikill -1 进程号
2 W. j+ ^* f* h实现重启nginx服务
- l& t* O- U1 |7 J7 L0 E; c2 W6 |$ D$ t$ J
6.查看nginx版本信息
, Y& l6 |1 e; m1 L2 T1).只显示版本信息$ x2 v$ d, i7 G1 j- @

# l+ u  L2 [. c2 z) f- c进入nginx安装目录执行
+ q- s. d7 ~% c0 p( b0 L* Q! J# M2 ?2 f2 I0 n
./sbin/nginx -v6 E% R( O0 Q0 y5 p) a3 D  p
2)显示版本信息和配置信息8 W5 B! r& B$ W+ K6 ~7 T

1 C# G& Q3 n6 v+ q8 h7 O5 w进入nginx安装目录执行
8 }8 r* C$ Q% ?
* m# i$ O0 j  a6 N/ b) K1 j./sbin/nginx -v
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:32:35 | 显示全部楼层
#启动
0 R( B2 H' O7 I* R" f#1.直接启动9 Z0 Y$ K. o; @( R& c
#进入nginx目录,执行启动命令; m. y' i. P( B# ~7 H1 v/ k
cd /usr/local/nginx/sbin
2 b0 Y6 q! e) C) Q- y./nginx5 B5 U1 d0 }+ W. Y
# 或者直接& e+ P# d: T% ?
/usr/local/nginx/sbin/nginx
; o$ q3 y( }/ y* ^$ Q' U#2.指定配置文件方式启动
& R  U  V, _  d8 o4 L+ p- H/ u, W#进入nginx目录,执行启动命令
# e- x  S$ c* Kcd /usr/local/nginx/sbin+ O: q2 |: A5 Z0 m
./nginx -c /usr/local/nginx/conf/nginx.conf& T, r  k" H. v3 W/ z) J( M% k" K
#或者
6 C7 `' @& l7 A4 K4 J7 I  Q/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf# b" }) {1 J; o* E1 F8 }4 f, C
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:33:07 | 显示全部楼层
检查ngnix配置文件- ?4 a+ N( g* b* R1 F6 @5 Y

; I- E0 a9 c8 }. [#进入nginx目录/ I! i8 L- n- l+ E
cd /usr/local/nginx/sbin# ~2 K; g" a6 X& c+ M7 d
#检查配置文件是否有语法操作; v. e/ F6 j3 E/ J7 x" P2 u) ]( j
./nginx -t* |9 V- `! D# s  c
# 或者显示指定配置文件
: F6 d, K  ]! L1 a7 o/ N./nginx -t -c /usr/local/nginx/conf/nginx.conf) K4 {! B+ M* r3 ~0 _
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:33:51 | 显示全部楼层
平滑的重启,修改配置后,重新加载配置6 ~( L8 t: p& g7 V+ g

$ l, t& Y. R9 L- Y1 D#进入nginx目录
" v: u# V* y3 R& n0 {cd /usr/local/nginx/sbin
: K. m7 h- m+ t# `#执行重载命令
; k0 ^* y7 q( a! w' v  o./nginx -s reload+ K1 I& j* l# ~" _" `9 N7 N
8 L* {4 C1 @* I9 A$ c+ z+ K  C; F8 i
nginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制。) S3 l  y* g/ Q& ^# w* d) y4 E" v
nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件8 S% F0 p2 R' {" t( {

* B. M$ x/ j* d. _) b5 }; o6 HNginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
4 a; l& ?" u* y, |7 l- rNginx启动新的worker进程,采用新的配置文件
" [0 W# G( X/ K# n( n8 {Nginx将新的请求分配新的worker进程) O# x$ f4 o. g: P4 b1 a
Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程- K* \, J9 y! A6 X/ G2 C
重复上面过程,知道全部旧的worker进程都被关闭掉。8 J( X4 Z- r& }3 x
所以,重启之后,master的进程号不变,worker的进程号会改变。
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:34:10 | 显示全部楼层
关闭nginx
3 c) H: S+ f+ B: G: Z. D4 T3 ~
. F. c, e. ^2 S* W#进入nginx目录; h0 K: O/ M! t0 v; I% h
cd /usr/local/nginx/sbin5 L8 C& E7 L0 S, ]$ Z( {
# 快速停止nginx
- w. N8 [4 p( V5 Z& E& I5 v./nginx -s stop) H0 B- S+ E- ]- O* h
# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx5 N; z2 G4 M/ n9 r
./nginx -s quit
& s' o0 a/ b% T/ e
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:34:32 | 显示全部楼层
reopen重新打开日志文件. O9 e' A4 h" P
$ k4 z+ d6 `8 M! D1 z
#进入nginx目录
7 k' q3 b2 X) C! g/ Pcd /usr/local/nginx/sbin5 J7 j/ [3 z! w  Y
# 重新打开日志文件$ {; G1 d( M) q2 `  R/ \* g
./nginx -s reopen0 C6 A. r1 S1 f/ A0 J/ K
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:34:53 | 显示全部楼层
当需要切割 nginx 日志文件时,我们需要用到 nginx -s reopen 命令,用来完成新日志的生成。* ?6 [, p, E7 O) @
当日志文件太大时,一般我们是按天切割文件,也就是按天做个分类,每天的日志放在一个文件中,并用日期命令,方便日后查找。" R  F: }; f6 R5 m  k3 k- D0 x
但时我们简单的把文件移动并重新命令是无法及时生效的,因为在 linux 下的文件句柄,文件在被打开的情况下 mv 移走文件,操作这个文件的进程还是有这个文件的信息,原进程还是读写原来的文件,简单的 mv 无法生效也就无法完成我们想要的文件分隔。
1 f7 j; [- K& _) m7 L5 _. f6 I6 P一般我们需要两步:
9 ?' W% _/ v' j3 @0 p" d! v" s) I8 i" W1 J: Z+ ]& d1 s  N
移走文件并重命名) @3 Y5 L* Q/ ?7 E4 A
利用 nginx 的 reopen 功能,完成新日志文件的生成。
$ u0 }2 N8 j  e7 i" J; M/ W参考地址,感谢博主分享
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:35:39 | 显示全部楼层
其他命令重启、关闭nginx+ I5 |( o. ]$ ~6 I$ U2 C0 O  {

0 T. |0 Y& m7 |/ o$ w+ R% z# 查看进程号,下图  master的为主进程号) g$ ?' X. R! p' j
ps -ef | grep nginx" V$ Q1 }- o$ S: H' g4 E
#从容停止Nginx
/ J4 B3 @6 n& O6 Z; a$ s3 Z: mkill -QUIT 主进程号
2 {& O% K1 o9 W/ u; \* B( n#快速停止Nginx
; _" q( A% q6 ]kill -TERM 主进程号
" M5 |% Q4 z: M. j" B* d% K1 s#强制停止Nginx/ c( r/ m; ]6 o# l) S. D/ D0 W* M' H
pkill -9 nginx* }$ o- v! Q9 ?4 {7 a/ Z
#平滑重启nginx:
! c4 }% x7 {9 a1 U3 q3 ?/ A$ Nkill -HUP 主进程号0 B6 o' K' O( P* H# e
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

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

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

1、启动:: M# V( }5 L& S3 E8 i7 p7 Q/ K

. F+ T( u! U1 G# j9 j( o8 Z# M8 @C:\server\nginx-1.0.2>start nginx
+ d5 U# I) {# Z
" b2 l3 [5 f- a& o( T; m, d6 l! E
) v" H$ `$ o7 s) @6 Q+ V
* e: f  P/ |3 ]4 D7 ^C:\server\nginx-1.0.2>nginx.exe* n) y) q# f0 g' _  u- H- C+ [
( q- V+ x6 k5 a3 m( m
注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。4 `. ]: L( W# j$ N7 O

& j( S5 U) d5 G* Y如果需要特殊设置nginx的配置文件路径,可以这样执行start nginx -c conf/nginx.conf, Y( w3 J4 Z5 M: @6 N! T
; c( t. s8 I. I! v9 z: m! B& t
2、停止:5 E, n2 k- B2 @" l4 A

6 t: Z4 l6 W  T& o( cC:\server\nginx-1.0.2>nginx.exe -s stop
0 k7 Q5 f  P$ S9 C* ?( U# i3 r% J5 s$ o- ^& D" z

, A6 D* ]0 e) S# b0 J$ G" F2 ]8 I' V& O, Z' T1 X) ~$ M% G: X4 Z
C:\server\nginx-1.0.2>nginx.exe -s quit/ ^4 \/ F' H. x
) g# `/ T5 X5 n: h# y
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。
7 O: n) j" q/ Q$ F2 Y' S
$ m, Z/ Z9 b; q8 |8 h/ ~执行 nginx.exe -s stop或者quit命令是不是不能删除进程?查看进程开了一堆nignx.exe# F9 Q( G4 \9 s3 ^6 {+ Z, ^
5 {+ x  W; O, l, P3 K  u
还有80端口在Listening,并且浏览器F5刷新还能访问页面,可能nginx.exe版本或系统的原因,用
, A+ `0 Q9 G' \% ?3 k" d  A
" U. ?+ q1 p8 _: D' Y. B! D& e1 n- ^& ataskkill /f /im nginx.exe > null 杀死nginx进程$ w9 z- |1 B( h- l' l

" M$ Y2 C. Y( l% v& e4 i3、重新载入Nginx:
/ U; B' F* ^3 M, v+ [( P3 f2 y
8 L7 L$ \* t+ T2 U  W4 `) dC:\server\nginx-1.0.2>nginx.exe -s reload
7 e* h( P; f4 ~
# d& n# i& K; P! i3 F/ t9 _1 v当配置信息修改,需要重新载入这些配置时使用此命令。7 w( u. r& L! B) ?8 ^% B- p
% H4 ^- W5 j. x% j
4、重新打开日志文件:
7 R1 v8 J' ~' }; {% ]: e
8 L6 w1 P- ?6 OC:\server\nginx-1.0.2>nginx.exe -s reopen
& j& W: _. k: l5 o  J0 X
" t, d4 M# o4 n8 V$ e4 v7 t! J5、查看Nginx版本:
2 z1 ~2 a: Z+ y% Z
- ?+ n8 e( H) @9 c* S- f% K" RC:\server\nginx-1.0.2>nginx -v
$ Z  P& W* ^  X- ^; h9 V
; ?. m4 x4 ]/ S0 a! Q. j$ _nginx: nginx version: nginx/1.0.2& }8 }9 _# n/ F, L; F# K

, N: c! i/ W* n$ H  C: M
, H6 J9 W' ]3 u! V0 y3 G9 U1 \$ t. n5 U
8 B0 H+ V8 m* B) B9 @C:\server\nginx-1.0.2>nginx -V
8 L8 {2 X8 g) ^7 |1 `
& H3 x$ M7 ~- d4 A5 y3 Bnginx: nginx version: nginx/1.0.2
! l" n9 n! v) P" [, \
. x& w' c, _1 y: z: n# C5 J5 `nginx: TLS SNI support enabled
1 V) W' ^: @, a% J" @- G; q" H' n, E6 P
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  x4 {3 C" p# V- {6 E7 z3 O% V

, d4 D; M3 n1 ~; ~) Z6 {注:v只是简单显示版本信息,V不但显示版本信息,还显示配置参数信息。
1 e9 z6 ?8 G1 T9 F5 P/ M* t- I
) g# T8 M, D7 k4 y
, X) N& ^7 i" j& a6、测试或载入指定配置文件:9 P. @2 E! P6 [8 O5 z2 G5 w, o/ F

8 b3 d9 ?) R. K) M: t注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:
2 W  _3 a7 A& y* }. s
% x. x& i2 b  V1 m' U8 VC:\server\nginx-1.0.2>nginx.exe -t -c conf/default.conf
6 }! m$ V* T: x
; l$ A) o& c$ ^/ |0 p# m  {nginx: the configuration file C:\server\nginx-1.0.2/conf/default.conf syntax isok! X+ e, I# C' h, [8 C3 h

$ o' b) O" K# _- q6 Gnginx: configuration file C:\server\nginx-1.0.2/conf/default.conf test is successful
1 E  a2 {/ k7 w  x, }3 N! V: p5 t, A2 X" f
载入指定配置文件
0 p! ~9 d5 t+ h) s  o& F! {0 z# {4 i; Z, c$ |6 N6 G
C:\server\nginx-1.0.2>start nginx.exe -c conf/default.conf
4 _+ v) z; C4 w% b( W2 i, n1 f! @  q; j1 R& i4 m9 Z
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:38:36 | 显示全部楼层
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程
, [! p1 R3 _# \ 在nginx.exe目录,打开命令行工具,用命令 启动/关闭/重启nginx 9 T1 s0 z5 X# b; L6 C
start nginx : 启动nginx" ~2 b  S. z9 A5 a4 J. q7 r$ @  C
nginx -s reload  :修改配置后重新加载生效
6 F' i* [1 k$ i+ b nginx -s reopen  :重新打开日志文件1 y" a! G9 Q+ h+ ?4 G
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确4 D( ~; N; }( q" {: I
       关闭nginx:* P: o- ]3 n0 p1 C( N8 R
nginx -s stop  :快速停止nginx# Y, o; K8 I0 G7 b0 [2 }  t! H1 K( t# y
nginx -s quit  :完整有序的停止nginx
9 }( B) f1 L8 c0 I, z9 o! |2 c 如果遇到报错:
% n6 r5 ?4 k# z' M0 _) N4 G, f3 k bash: nginx: command not found+ f) I  W' ?3 W0 o, [. j
有可能是你再linux命令行环境下运行了windows命令,
* Y( |; E5 T$ O5 o 如果你之前是允许 nginx -s reload报错, 试下 ./nginx -s reload( [: U  ?; d/ B  d- b
或者 用windows系统自带命令行工具运行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-7 21:22 , Processed in 0.077480 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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