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

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

[复制链接]

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
发表于 2023-5-23 17:31:14 | 显示全部楼层 |阅读模式
1.启动nginx
% N& ^( S4 A$ B6 @. A进入nginx安装目录执行; ?. W4 `0 n* x/ W' g: v, Z

  ]  p: K' d3 N+ T; A, B! D./sbin/nginx -c ./conf/nginx.conf# ^. k/ {/ N1 m4 ^
2.验证nginx配置文件是否正确
# v4 ^& J" v, a2 X: B+ R: j- I: h5 i: s1 T
方法1. 进入nginx安装目录sbin下,输入命令" `0 l; e! q0 U. s- U
; }) `" Y; i6 t: M# ~; `' d( d7 Z
./nginx -t( ^/ R' H" [# j6 A. D7 }- [
回显test is successful说明配置正确( S9 E  C: T( q6 g, ]7 h) E6 x- m
9 L+ J4 J. a* j4 h( V' J
方法2. 在启动nginx命令 -c 前加 -t' c( Z5 a! P/ E+ L  |

" u: f5 I8 ~7 S* b$ q4 l8 [./sbin/nginx -t -c ./conf/nginx.conf
* i6 }# ]. l" S. E+ T( n, R+ P) {) T% v3.停止nginx7 `8 J+ [* {! h' `2 V1 S
方法1:5 w3 z7 X3 p! g  y# D& c
$ j  v+ ]6 t7 ]
强制停止:6 R  p; R. [" M4 s/ V7 ?! z

* o4 m' t9 f1 V: m./sbin/nginx -s stop
( c, P! k. X0 v处理完请求后停止:( O/ Z* A' H( x( k/ \, e
9 ]# n8 O! a4 S  |) O0 E
./sbin/nginx -s quit3 j( Y% U+ m9 q
方法2:+ D* f  |$ [0 z8 B* m3 ?

& o' V. x8 q8 N6 G  Z% M  ~7 g$ cps -ef|grep nginx( _' C5 H2 ^0 m: d8 c) o8 I
找到对应的nginx进程号
4 ^. t- K4 M( k& V5 x. y# y1 F# U- k- P  _) o. V' u' \2 l
正常停止:
7 e% t  C4 L1 m) r  g( K: U
( v  ~, W) s/ {( Y4 r9 G/ R# ?kill -15 进程号7 N% z: h. [& l* r
强制停止:
, K# k" P5 y7 z1 m; O; f
* E) S$ `5 d0 \; akill -9 进程号' {0 x3 Z7 l" a: f3 A
4.重启新加载nginx配置文件0 u" p* Z% I& i' q" _
方法1. 进入nginx安装目录执行$ s& _! A) f' v5 _' d! E" H5 i  j
! F/ S' b4 _* F- o" D. y4 |
./sbin/nginx -s reload
( x$ \+ U4 r' n: L# l  I7 @! R5 p5.重启nginx服务
( }$ J* s1 y0 D: A方法1. 进入nginx安装目录执行
4 }. f1 V. i9 P& F" s# A# K( U  R4 q6 s6 I! J4 \4 V( ^
./sbin/nginx -s reopen4 Y  `, ^# x6 n* R7 ^! t( f
方法2.查找当前nginx的PID进程号,并kill
' G0 Z' ^. T' H( }; _& Q4 [2 [( Q& V$ Q0 u
ps -ef|grep nginx
+ }. d* u) V8 ]8 @1 b找到对应的nginx进程号,进行
) k9 n- U4 c( g! }' x( ~* l3 T! a( A0 b) b1 z+ ]' @
kill -HUP 进程号5 X3 B. x! h" H
: d! P1 a6 s, D/ P
3 p9 ~+ k9 ~2 V% [' Z% S4 d- [) R
kill -1 进程号! D; b0 q) o& w% A( w
实现重启nginx服务- M! R1 N5 N, w, L! P: V' F- A
/ r4 s8 `7 Z, r6 ~$ @
6.查看nginx版本信息
/ H7 B" v2 R6 x1).只显示版本信息
# P/ j8 A, U8 S8 x- P7 b) Z5 I- H  _2 [2 U2 h
进入nginx安装目录执行
# Y2 j2 A6 d& ]- U! ]. @
6 i) |+ y0 d' @0 A/ M% b./sbin/nginx -v: T( t6 R9 @! s$ ?1 h
2)显示版本信息和配置信息3 h9 L& x. E, \) E4 n
: |' f0 T8 K) ?
进入nginx安装目录执行
1 X; S5 E' I' C2 _! P! C& e9 k; f! B+ i: \
./sbin/nginx -v
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:32:35 | 显示全部楼层
#启动7 M; R$ u- T% V0 e  A9 k4 A) a& P
#1.直接启动
3 i4 x0 {/ H, t% \#进入nginx目录,执行启动命令
* O: G! T& j; W8 e/ i% dcd /usr/local/nginx/sbin# Q( @6 B, L4 i8 Q& n
./nginx
, [) E4 o5 k+ n/ L* ?( u5 U# 或者直接
" w7 ~6 Q+ w& E6 f% {1 U- S4 c/usr/local/nginx/sbin/nginx
$ O1 K7 O$ f& ~# U6 R, r" r#2.指定配置文件方式启动
: y% G) I4 L8 Z( S4 y1 w8 D#进入nginx目录,执行启动命令+ b/ \9 M, E% i% W) Q
cd /usr/local/nginx/sbin! t. f) r1 z" Q0 C4 c- a
./nginx -c /usr/local/nginx/conf/nginx.conf3 n8 w9 }5 N3 [8 f
#或者
% o# M# ?$ v8 G: J* M$ s/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf  ]' I! |& }* H3 h6 w7 h+ g. m
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:33:07 | 显示全部楼层
检查ngnix配置文件
7 k; C& {! y1 S! R' T' t7 u; D* q) q* l5 r' ]! P( {
#进入nginx目录
# F" @/ I/ ]$ O( Y  E( n) Ecd /usr/local/nginx/sbin* {3 K, ]* h  c; @
#检查配置文件是否有语法操作
; ?) M) k1 P  d# K/ X./nginx -t
5 e2 ~* _0 o. v' e: @; a# 或者显示指定配置文件
+ x9 N8 L9 ?" @; |( a./nginx -t -c /usr/local/nginx/conf/nginx.conf
. D# m+ m- S7 y) }1 B! f
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:33:51 | 显示全部楼层
平滑的重启,修改配置后,重新加载配置
* l5 y" z/ y7 m, L* t
9 P7 |0 _8 R# |2 t$ _" W" ^#进入nginx目录
) r: ?* K. Q% mcd /usr/local/nginx/sbin
( ~! l+ @- G. M& H7 W#执行重载命令  G5 w6 y8 \# E' q
./nginx -s reload% ?, I/ v! V( O# {
9 m" j9 u& Q/ B# I5 |
nginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制。
: L7 M% B5 I% y: B3 v% ~" B, Gnginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件
# ]+ O' h( A( _1 R$ k0 e! I1 @7 r5 A+ ~1 j' V9 l1 f% J( q+ x
Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
* V  W! c$ u* Q5 @Nginx启动新的worker进程,采用新的配置文件
$ H( H9 f- E, uNginx将新的请求分配新的worker进程+ |& a2 Q% W& S! P6 ]+ E# |* N
Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
) }: a: z7 m/ b! h# W重复上面过程,知道全部旧的worker进程都被关闭掉。
7 q0 S9 A3 |+ w% T所以,重启之后,master的进程号不变,worker的进程号会改变。
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:34:10 | 显示全部楼层
关闭nginx  P) e5 d, w. l2 t1 Q1 F8 w' {

. D' m, H# e) Q6 O- e7 c0 l) R#进入nginx目录
2 b1 t; j! k7 n7 B7 Fcd /usr/local/nginx/sbin
! S$ J0 c! C3 h* e9 D# 快速停止nginx
( `* W( }4 K$ R1 C7 w/ U5 R) L./nginx -s stop
5 t" k/ a' b) w! }6 V# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx: @: T3 o. q' j1 |
./nginx -s quit
( O+ v4 D3 X: w
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:34:32 | 显示全部楼层
reopen重新打开日志文件
% n5 p7 G4 [0 S5 k0 f' ~( H7 ?) a4 A
#进入nginx目录7 t& n+ H% G) x( n3 f$ g
cd /usr/local/nginx/sbin  O, B2 V9 m5 V3 ^
# 重新打开日志文件
! K& ]1 n8 l4 l- W' d4 \./nginx -s reopen
; d2 W& s; ]0 l  n. _
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:34:53 | 显示全部楼层
当需要切割 nginx 日志文件时,我们需要用到 nginx -s reopen 命令,用来完成新日志的生成。
* ]$ v( T0 r( M( R, Z, {2 [3 }当日志文件太大时,一般我们是按天切割文件,也就是按天做个分类,每天的日志放在一个文件中,并用日期命令,方便日后查找。! K! R6 K8 [* \/ n' b: R$ T
但时我们简单的把文件移动并重新命令是无法及时生效的,因为在 linux 下的文件句柄,文件在被打开的情况下 mv 移走文件,操作这个文件的进程还是有这个文件的信息,原进程还是读写原来的文件,简单的 mv 无法生效也就无法完成我们想要的文件分隔。6 |: I6 [# m. y
一般我们需要两步:! N5 u& g) S) A( X

+ h2 `8 j3 R2 T3 Z& k" _; P移走文件并重命名, I4 e  m4 u2 `( G# D2 T  u% p
利用 nginx 的 reopen 功能,完成新日志文件的生成。, D" O( _( U5 X8 b4 [. i
参考地址,感谢博主分享
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:35:39 | 显示全部楼层
其他命令重启、关闭nginx
5 j. X0 t5 Y# p8 \$ M' g
  A1 F8 x, }8 s2 r) o9 ]3 b7 @0 z# 查看进程号,下图  master的为主进程号
+ U$ D$ s4 ^* pps -ef | grep nginx
$ @- d0 w/ ]: y; s3 s9 x1 ~5 g#从容停止Nginx2 N/ @3 q/ g  c9 @+ K5 J
kill -QUIT 主进程号, X2 Z6 `0 ?+ I  }
#快速停止Nginx
/ |5 d0 d' [+ f% t4 F! mkill -TERM 主进程号
  z' O0 O1 h  ~3 U# Q* l. l# K#强制停止Nginx
! p- K5 l- ~, }+ B0 R9 fpkill -9 nginx, Y* \9 L( w4 H/ Q
#平滑重启nginx:
4 j1 U) V, u) Q2 c3 lkill -HUP 主进程号
$ P5 V3 n' h! ]' M$ w* C0 p, h
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

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

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

1、启动:/ D) w5 E$ z5 J* P/ n' z% }$ \

8 b+ l& Q$ u  F3 S: G7 G! G' VC:\server\nginx-1.0.2>start nginx
( b, T  s) F$ p0 g. ]. z- ]2 Z% W) E+ z8 {$ r; T

) p2 A4 J( |( Z# |- m" K5 H# J( D8 b5 s% d$ p; j9 Q$ h
C:\server\nginx-1.0.2>nginx.exe0 M; O/ G* `2 ^7 k! O$ l( T/ H
! A' w. Z, K* z& f1 o2 F
注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。* o. T5 L3 w' {

, y: X3 Y2 I% w1 F" {/ H. B, ^如果需要特殊设置nginx的配置文件路径,可以这样执行start nginx -c conf/nginx.conf
/ P: `. m2 B# M+ b) u) M+ {8 _; Z& y. [
2、停止:8 ?) j7 A  r4 Y$ p! ~. Y
' X6 a; Q: E7 v1 N
C:\server\nginx-1.0.2>nginx.exe -s stop
, L- C# j/ u9 K: e" b5 C+ x) t/ i( ^2 g

+ o0 Q1 @$ w. q$ K8 N) N5 x" K
; |. Z% _$ Z- Y0 ]& o- |C:\server\nginx-1.0.2>nginx.exe -s quit/ m# g4 Y+ V: N. F8 j
$ X* F/ {8 a* b: w  p* K
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。
' @" s2 k1 m; C+ F' b7 X! T" V: ?5 T4 F
执行 nginx.exe -s stop或者quit命令是不是不能删除进程?查看进程开了一堆nignx.exe# ~6 o( y7 U+ p" k' y
& K1 J# s. k# W" |3 Z
还有80端口在Listening,并且浏览器F5刷新还能访问页面,可能nginx.exe版本或系统的原因,用. `( [4 z  o" @

4 R% v# K- L8 |  X7 ataskkill /f /im nginx.exe > null 杀死nginx进程
" x* S: _7 v' z
& o. |; h% o+ Y# l# d/ K( C$ `3、重新载入Nginx:
2 f' s& w3 M3 M; F7 j- J# L% x- w1 p5 C6 u" T; b# @0 y
C:\server\nginx-1.0.2>nginx.exe -s reload
+ f! e" M" T6 S) C# w4 D2 ^0 j- E; y8 H
6 j3 M: v1 i4 Q3 q- U& U( x9 _4 G8 ^当配置信息修改,需要重新载入这些配置时使用此命令。8 Y( X( s5 k. J# T5 q) {

& E1 \# j8 i( h4、重新打开日志文件:
6 N! y; ?2 z  ~, C, z. L% |, `
! x. P) n7 s7 P4 e1 ]* yC:\server\nginx-1.0.2>nginx.exe -s reopen
1 J: S% d7 l0 @* [8 d" D
& I7 N9 P& d: b' F% N% e$ V1 U5、查看Nginx版本:6 p; b# `9 X' `; _
" ^1 o; j* A( }+ ~) _) J7 Q4 h5 E; u
C:\server\nginx-1.0.2>nginx -v
# Z. c) h% X! h( S3 a. Q& H6 z0 X* d. b: A( V
nginx: nginx version: nginx/1.0.2
9 X4 t& y) Y' j" L3 _
7 S9 C! ~6 \3 l# |7 i: C3 V' w4 H% m& M& C4 I  {, {; t

  O+ i) |4 ^( R. j3 ?) y2 g( gC:\server\nginx-1.0.2>nginx -V" e3 ]0 K( _! Q8 e
0 n. E) y1 t6 S! K$ U7 p
nginx: nginx version: nginx/1.0.26 r9 h4 U6 |2 s/ {

4 M+ D" I; C- `nginx: TLS SNI support enabled/ Q  M1 l0 u: S# u( C) O

/ _7 h3 V  A! O, v8 Lnginx: 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+ a9 X1 P9 Y, l( ?

/ N* P: K3 M8 P! l9 ~( y注:v只是简单显示版本信息,V不但显示版本信息,还显示配置参数信息。
. c$ w/ [! P1 Q5 o# _- D( z7 M
  S' a% K& r. l. K1 `4 L: s+ o6 X  ?" p
6、测试或载入指定配置文件:9 j0 C. R4 z+ X* W) B0 _
) L- c/ W" J9 V: W9 W5 L
注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:
; f7 y4 ?3 }  V% Q" f9 _
* B) D1 u- q" A0 KC:\server\nginx-1.0.2>nginx.exe -t -c conf/default.conf! |( a3 w+ l6 g5 H# {
  I  K& M" t$ N- F# U# Y
nginx: the configuration file C:\server\nginx-1.0.2/conf/default.conf syntax isok
" z8 H6 ^# n) ^! L. v5 \& l% [1 ?% E* b- W5 y
nginx: configuration file C:\server\nginx-1.0.2/conf/default.conf test is successful
& H5 i. u& Y$ X% z5 P1 m: b5 s& W/ a% T; K
载入指定配置文件
! G# k5 ^" U7 k5 i
% v: N  T/ \* {1 I# t4 _, P# aC:\server\nginx-1.0.2>start nginx.exe -c conf/default.conf$ t1 e, ?! j. x: c8 [

1 v5 R. I7 F; r! _( j: ]8 O$ q# ^" E
回复

使用道具 举报

322

主题

485

回帖

3164

积分

管理员

积分
3164
QQ
 楼主| 发表于 2023-5-23 17:38:36 | 显示全部楼层
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程4 [7 @1 e  W% c, ?6 \! n" I
在nginx.exe目录,打开命令行工具,用命令 启动/关闭/重启nginx 8 k) T' O+ X! U7 y7 x1 \4 j
start nginx : 启动nginx( H* P' b4 |- n' E* `+ z! V
nginx -s reload  :修改配置后重新加载生效% S3 N3 ]: m6 s3 R1 I: J( ], F* f; K
nginx -s reopen  :重新打开日志文件
6 e; }$ H0 G8 i  S3 g nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确) D6 x# F: q+ t5 U
       关闭nginx:
, A- w) a- n, |8 T nginx -s stop  :快速停止nginx( p5 t% d7 }+ I
nginx -s quit  :完整有序的停止nginx
( X$ W* O/ I$ C 如果遇到报错:
- R1 k& q( o/ \& D! r9 K8 p bash: nginx: command not found) o2 q! b% {* h) I# u0 D5 Q
有可能是你再linux命令行环境下运行了windows命令,. p* d6 j; a% u' O$ T
如果你之前是允许 nginx -s reload报错, 试下 ./nginx -s reload
% f5 C7 S. Q9 I! _/ U4 ] 或者 用windows系统自带命令行工具运行
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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