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

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

[复制链接]

322

主题

485

回帖

3172

积分

管理员

积分
3172
QQ
发表于 2023-5-23 17:31:14 | 显示全部楼层 |阅读模式
1.启动nginx) Y- n1 q5 O+ ~6 n; @; k
进入nginx安装目录执行5 J0 W$ K% [; X# b' g
0 z$ h3 q; U) u3 o, ?
./sbin/nginx -c ./conf/nginx.conf6 ^! Q! j& N3 W# @# C
2.验证nginx配置文件是否正确3 R( d, `" B! }6 S
1 g1 ?. Q" i  G6 h; Z( M) s
方法1. 进入nginx安装目录sbin下,输入命令
  h4 l0 [. Z) i( g0 J) k
1 o9 g0 X  @1 ]0 _5 T/ g' w./nginx -t$ b  z: U5 S" E8 i. a: b. B6 Y9 w; h
回显test is successful说明配置正确2 R3 S% T7 Z. {& T( k
3 f) Y3 c$ U) Q) b& e
方法2. 在启动nginx命令 -c 前加 -t
- q! l1 w- T1 X7 u3 u) j. i( @
4 Z' F) w* C+ N8 W+ ?./sbin/nginx -t -c ./conf/nginx.conf0 T; w& r8 m$ Y. h* t, b3 ~
3.停止nginx/ E) L) B% _! _( c$ }# K
方法1:
) F$ ]5 v& s0 C9 h+ D5 L
4 e; _! M% r1 n4 N6 P强制停止:$ m0 M$ g$ \3 ?$ U( t+ Y
+ M( S; W% t6 Y& f! Q6 J8 O2 t& \
./sbin/nginx -s stop5 k& b- @. z7 D
处理完请求后停止:! e6 o2 A$ {8 \: G
/ W7 }2 f1 D: b
./sbin/nginx -s quit
/ t- u5 _3 t# u0 p方法2:2 X+ ^7 q: t7 k( ^: Z

7 [' V' l3 j7 b3 c, k" ?4 \ps -ef|grep nginx
. @. e3 x4 N& G. R找到对应的nginx进程号
0 F8 t3 R% t- b5 e3 P2 T! u5 p( t2 i4 e! R0 T
正常停止:
% i! f2 T6 Z0 ]; N1 [9 E4 _2 r5 I& I  p; W% B3 L+ C
kill -15 进程号
3 E' z) o5 ^% T& g强制停止:
0 q; j; g' b8 _0 m
! v5 D  Y+ ], O7 d+ Okill -9 进程号
6 K- O5 K" ?+ W# K; B$ \4.重启新加载nginx配置文件5 W: b2 a( S7 l" w1 F1 g; h0 C
方法1. 进入nginx安装目录执行+ N  g( d6 K! H8 z% W/ r( g% h6 k
  b5 k8 A/ i6 O% ]
./sbin/nginx -s reload
+ D% a% p) }8 V! b; y& \5.重启nginx服务5 ?! v+ o( w+ c+ w
方法1. 进入nginx安装目录执行2 P# E# x0 W9 S! W9 h& \

. q$ w9 m8 d0 Y/ w( @./sbin/nginx -s reopen, \$ c- o: {" d9 H3 v# }
方法2.查找当前nginx的PID进程号,并kill% U4 h/ l0 e2 i

3 m7 U) h7 W! q; b2 dps -ef|grep nginx" l; c6 r1 ?/ j2 F* w' F6 m# m
找到对应的nginx进程号,进行4 d% ~, D' k& X- r3 s% S
& {- `9 _+ I- }' h2 C2 D
kill -HUP 进程号+ i& r/ H( F6 E+ O8 }8 ]7 H

5 F8 J* ?8 Q, N# v+ g. Q9 ]- o& L6 w0 l/ @0 @' ]' a
kill -1 进程号
& z4 L/ P1 D! z2 z实现重启nginx服务8 G: r. s5 @$ H' p  _6 p5 o

' V. b  K$ u2 a  W0 k 6.查看nginx版本信息
4 y3 d5 |% C8 L8 ~0 {" s1).只显示版本信息
+ C, G8 Y# U; J8 I# w
7 b& L: |. Z' _$ ^0 W' x: I进入nginx安装目录执行
6 C, L7 U$ J# l0 ~" W! {6 w) r, ~. o: A) J
./sbin/nginx -v3 ^, }5 a3 a1 e' W+ Q8 S
2)显示版本信息和配置信息
' M5 B  R; V% N+ Z
, R) `, U9 ]9 Z进入nginx安装目录执行
7 a, {, Q- U9 d3 L! u& C! t3 N* e+ |! {( g
./sbin/nginx -v
回复

使用道具 举报

322

主题

485

回帖

3172

积分

管理员

积分
3172
QQ
 楼主| 发表于 2023-5-23 17:32:35 | 显示全部楼层
#启动+ b9 ~1 ~6 T) j7 o0 r" M
#1.直接启动3 v5 P( M3 r( n- H
#进入nginx目录,执行启动命令. H, @8 W& A* c4 x: e
cd /usr/local/nginx/sbin/ Q1 a3 I( v0 `8 p
./nginx
, B6 L2 `' x* ^( g6 f0 }" Z6 c8 D# 或者直接) N0 _0 H, h) [
/usr/local/nginx/sbin/nginx
) F! z! [5 a6 E0 x3 |1 c6 t/ X#2.指定配置文件方式启动
. k5 T1 a& I8 E#进入nginx目录,执行启动命令* Y! A6 C  E, h/ @3 {8 T' Y5 }
cd /usr/local/nginx/sbin% o4 c9 L4 D& T6 L. U1 c, c  \
./nginx -c /usr/local/nginx/conf/nginx.conf
+ k7 p6 C2 z0 j#或者- E/ s0 `0 E% L- Z
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
6 W4 u% b# O( N+ T1 s
回复

使用道具 举报

322

主题

485

回帖

3172

积分

管理员

积分
3172
QQ
 楼主| 发表于 2023-5-23 17:33:07 | 显示全部楼层
检查ngnix配置文件1 G9 g- X6 {# C# O
  p) v/ g8 g! X0 U/ t9 g9 ~
#进入nginx目录2 u+ e8 e$ e& e( O) k
cd /usr/local/nginx/sbin( U3 [/ @. f' ?- V: V6 X
#检查配置文件是否有语法操作
, k% f5 n! R" U- M; O1 x./nginx -t
( R  T& s; ~) j6 h3 w5 K: x# 或者显示指定配置文件/ K# l* ]" k- d9 l9 ?
./nginx -t -c /usr/local/nginx/conf/nginx.conf
6 a$ p  N- E6 l: u
回复

使用道具 举报

322

主题

485

回帖

3172

积分

管理员

积分
3172
QQ
 楼主| 发表于 2023-5-23 17:33:51 | 显示全部楼层
平滑的重启,修改配置后,重新加载配置
+ \) P& q0 Q; r7 d& i
& r1 E0 n6 r4 o& T#进入nginx目录
5 Y) z% H+ U9 ]- scd /usr/local/nginx/sbin
% x% E" }) u' j" {8 i& \#执行重载命令
2 t+ Y- [1 @! _; |' f. U7 ]" m./nginx -s reload
; k2 W% i$ u0 C" Z1 E* a. B0 k0 i: W
nginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制。
. ^6 s* b9 p( ?nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件
, y# s* T4 m6 @% Y
3 Y4 Q, l# G, W. c& C( [9 p  GNginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
# O" Y2 K* s4 R6 ^Nginx启动新的worker进程,采用新的配置文件$ z; F! @) N4 ~6 a6 k% z9 |; J1 P
Nginx将新的请求分配新的worker进程
* [. E4 J) u% YNginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
1 k+ b% W2 e/ N0 G3 M( ~6 j重复上面过程,知道全部旧的worker进程都被关闭掉。8 M1 }- m2 s# ?' p# x# t& k
所以,重启之后,master的进程号不变,worker的进程号会改变。
回复

使用道具 举报

322

主题

485

回帖

3172

积分

管理员

积分
3172
QQ
 楼主| 发表于 2023-5-23 17:34:10 | 显示全部楼层
关闭nginx+ _3 e; _6 j: v6 V
& ]" f2 p& U7 g
#进入nginx目录  S6 Q; @" M- P+ o0 U3 U; I
cd /usr/local/nginx/sbin, v& G# [0 a: e: z
# 快速停止nginx" I- u7 V/ C% ?! }% \. s0 O3 T
./nginx -s stop
- i8 M  r8 H) H( j7 V* ~# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx
, S5 g5 g" D9 o9 E./nginx -s quit
8 X# I" l- `. I1 a2 n2 V  M; H
回复

使用道具 举报

322

主题

485

回帖

3172

积分

管理员

积分
3172
QQ
 楼主| 发表于 2023-5-23 17:34:32 | 显示全部楼层
reopen重新打开日志文件
5 R# q; t: k- T5 ?8 I& h7 Q1 s9 v6 Y: k% C" b: s1 y: H* B
#进入nginx目录5 D4 n# w6 c0 b$ G4 {" ]/ ?
cd /usr/local/nginx/sbin1 @7 v: O' j6 @# @3 J; S
# 重新打开日志文件
" k: ~; n3 I" S$ f./nginx -s reopen% ~4 V1 h+ {) x( a' x
回复

使用道具 举报

322

主题

485

回帖

3172

积分

管理员

积分
3172
QQ
 楼主| 发表于 2023-5-23 17:34:53 | 显示全部楼层
当需要切割 nginx 日志文件时,我们需要用到 nginx -s reopen 命令,用来完成新日志的生成。
: I% l. h7 f5 W% v当日志文件太大时,一般我们是按天切割文件,也就是按天做个分类,每天的日志放在一个文件中,并用日期命令,方便日后查找。
2 e# `' M& @( ]3 X# g但时我们简单的把文件移动并重新命令是无法及时生效的,因为在 linux 下的文件句柄,文件在被打开的情况下 mv 移走文件,操作这个文件的进程还是有这个文件的信息,原进程还是读写原来的文件,简单的 mv 无法生效也就无法完成我们想要的文件分隔。" l$ K. W: Y# S3 V; x; z
一般我们需要两步:
; ~  U8 f4 x0 Z; d7 {
1 o( Z" \3 R- t& V9 w* `) o( i移走文件并重命名
8 w1 h! W0 C' e8 Y  c; L9 w利用 nginx 的 reopen 功能,完成新日志文件的生成。+ ?4 \* D( z9 {! E
参考地址,感谢博主分享
回复

使用道具 举报

322

主题

485

回帖

3172

积分

管理员

积分
3172
QQ
 楼主| 发表于 2023-5-23 17:35:39 | 显示全部楼层
其他命令重启、关闭nginx# K$ b" {8 q; ?# \
/ [, O: \  A0 H) Q% @& v+ [
# 查看进程号,下图  master的为主进程号2 i7 h  b7 s# f3 |) R
ps -ef | grep nginx6 d, ?, N/ v/ m4 P; o1 S7 j
#从容停止Nginx
; Z) J$ g3 k" f& K, P! O3 Qkill -QUIT 主进程号; O0 J- H: i$ d9 ?1 j2 Y
#快速停止Nginx: U' Y3 ?7 x8 F, m* ~
kill -TERM 主进程号
% W; P2 Y( k8 S4 I#强制停止Nginx
% k" R% J* R! C8 D( l+ ]pkill -9 nginx4 a( b: k# l. ~% N: A; t/ Z2 c1 y
#平滑重启nginx:; U: F8 l9 X" [5 k
kill -HUP 主进程号
- S' q. U5 }* ^; V5 h
回复

使用道具 举报

322

主题

485

回帖

3172

积分

管理员

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

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

1、启动:$ m3 e1 {0 y. j  z
$ W9 y* y/ y2 n1 W- |
C:\server\nginx-1.0.2>start nginx  l+ r! V) G2 w* ?6 P5 a

7 J* O9 `) f7 Q0 x  O
4 {; }& b; _2 H: t/ n3 U6 r3 z( l* k' i) b7 D8 O* S- _. l
C:\server\nginx-1.0.2>nginx.exe- e8 c8 n2 z1 \- Q

  v4 H5 Y/ I( D注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。
) O% Z' ]- g3 P3 t4 ]7 P1 h7 Z  h/ Z5 P& {2 E
如果需要特殊设置nginx的配置文件路径,可以这样执行start nginx -c conf/nginx.conf* g9 Z# B5 g# c1 n( P, l
' W( C7 m1 p9 D$ Z% v4 s
2、停止:
8 ~# |' z' U+ F/ {
0 I* U5 Q" @5 m2 c  x5 `C:\server\nginx-1.0.2>nginx.exe -s stop$ _9 B6 Y: y3 e( X- A! M

; f: P! q0 r2 d
) W  n( K! ?. a  K9 D9 j0 G( ^6 g8 x7 U/ M2 v
C:\server\nginx-1.0.2>nginx.exe -s quit* P0 ~8 ^8 D9 J0 S* Z% i7 Z
0 N4 |4 r8 n0 d$ P/ M
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。
$ r/ t  ~4 s. u0 C' o; a7 x7 U* J+ Y3 i
执行 nginx.exe -s stop或者quit命令是不是不能删除进程?查看进程开了一堆nignx.exe
& u. R. o& G4 t8 m) e0 n
0 G2 \5 z+ d1 O4 H还有80端口在Listening,并且浏览器F5刷新还能访问页面,可能nginx.exe版本或系统的原因,用: o  V2 U( ~' {7 V2 A
$ q: l# [' i7 U  b" w- c4 c
taskkill /f /im nginx.exe > null 杀死nginx进程  i8 ~8 Q" [. T

1 X2 d6 z3 d4 n8 {( w# P3、重新载入Nginx:
+ V1 N0 j1 Y; h$ n5 U$ p. ]: \, _9 Q# P6 T6 q7 Y5 Q
C:\server\nginx-1.0.2>nginx.exe -s reload: \  ]3 N1 r, H8 N6 e$ E

* b+ h4 V' V# {/ L当配置信息修改,需要重新载入这些配置时使用此命令。
' ~1 A9 J1 \* `; |# d6 y# s* j# g: Y# [0 m1 }% d, r
4、重新打开日志文件:# M' Z9 [3 f: @/ P
  U4 M/ H. V& n. ~& C9 s
C:\server\nginx-1.0.2>nginx.exe -s reopen
# D8 V  B0 `9 {* x8 {
: Z" D0 Q7 D* ?6 I& h9 y# A- o5、查看Nginx版本:( H  w, Q$ h, q( n& M! N# i

  z4 |6 X, _3 j9 o5 V. R$ N6 o) @C:\server\nginx-1.0.2>nginx -v
) k( n+ `, L* S& u( w$ H
: X( A3 K. |( `+ w9 Z2 {* G1 Xnginx: nginx version: nginx/1.0.2
5 z" t1 m; b/ W9 n0 k0 Z( }7 f
8 ]' E2 K1 |* X# C) [& l+ n) v2 N$ [5 b$ c3 H) t0 T$ @% U8 S5 \! D  Y
- P; P! T! ~$ R% Q  r+ r0 M% Z
C:\server\nginx-1.0.2>nginx -V
) i! |" i$ t) _2 k% K# \. @) H2 W$ q6 q7 M! z
nginx: nginx version: nginx/1.0.2
" i1 t5 a: h$ [5 C. P1 C4 X  I
9 r2 q& ^, X4 g, w4 v9 u( P) Z9 O! Z, jnginx: TLS SNI support enabled
" E6 b0 U+ {% t* s6 I% |- U9 v- W! m: I( i
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
& L0 [0 g+ g( w* o
0 ?! l" M8 `9 _' V1 ^注:v只是简单显示版本信息,V不但显示版本信息,还显示配置参数信息。  Y6 T( x+ v7 ?: p! F1 P' B
3 O4 n$ L4 [+ c% F3 Y1 G3 f6 N

* v: m% i0 ?! K0 \4 L. w; N2 `6、测试或载入指定配置文件:
: Y4 x8 X; E. F, r* k4 r) t8 u
0 C) P! _/ @; U1 o3 m注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:
1 ?8 I# O% y9 G% F8 ~
, A0 H6 L' w+ _7 q, q2 }/ h  P+ ZC:\server\nginx-1.0.2>nginx.exe -t -c conf/default.conf
# r- _6 K" p9 }/ U7 i1 v+ ?) Q+ }6 J: c4 g2 y
nginx: the configuration file C:\server\nginx-1.0.2/conf/default.conf syntax isok
+ J9 A0 O# u( }! x4 x0 ~2 G3 x& n# d0 M6 R1 `7 A
nginx: configuration file C:\server\nginx-1.0.2/conf/default.conf test is successful) P' B" r* K7 |; L$ l1 ]

  b( x- y" j! F& F* c5 N载入指定配置文件( Z5 T# C6 U) T6 \
+ o3 y) j4 N" y' M
C:\server\nginx-1.0.2>start nginx.exe -c conf/default.conf
5 k3 `7 |$ l3 A4 {5 z! \* d6 d& M! _* F! f3 i/ X
回复

使用道具 举报

322

主题

485

回帖

3172

积分

管理员

积分
3172
QQ
 楼主| 发表于 2023-5-23 17:38:36 | 显示全部楼层
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程
7 y/ g/ S, G% i" c' d; {8 d2 ` 在nginx.exe目录,打开命令行工具,用命令 启动/关闭/重启nginx
. t- ~: Y8 l5 @: J* W! T2 T9 k' a start nginx : 启动nginx
- W4 [0 m% L) c0 h: S, \ nginx -s reload  :修改配置后重新加载生效
2 t# _6 p7 |; e2 M3 w3 H  _ nginx -s reopen  :重新打开日志文件" G5 T6 @: ]" ?5 d
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确
. C) C# x( {7 l+ L9 U       关闭nginx:3 U; P$ d7 [; c1 r. J" d
nginx -s stop  :快速停止nginx3 G5 F; L, I, W
nginx -s quit  :完整有序的停止nginx7 N& Y1 T1 a4 g, t( B- `' \
如果遇到报错:4 v( q* j7 k; R8 I! W5 F% l& o
bash: nginx: command not found
. W% p! E( e# P. y. [ 有可能是你再linux命令行环境下运行了windows命令,- L2 m) _! i  p# v
如果你之前是允许 nginx -s reload报错, 试下 ./nginx -s reload
9 u. e$ |8 m1 e3 k: o, r$ b 或者 用windows系统自带命令行工具运行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-19 04:39 , Processed in 0.082262 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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