nginx启动,重启,重新加载,以及前缀路径设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx启动,重启,重新加载,以及前缀路径设置相关的知识,希望对你有一定的参考价值。

参考技术A 命令行里对nginx操作都需要运行nginx安装目录下的 sbin/nginx,默认会放在 /usr/local/openresty/nginx/sbin 目录下,如果不是openresty里装的nginx,应该就是没有openresty这一层目录的位置
这个路径比较长,所以一般会把它配在环境变量里

之后就可以在任意目录下直接使用nginx命令了,但是这种方法在关闭窗口后就没有用了。
修改环境变量有多种方法,这里贴个别的博客的 链接 ,写的比较详细
我这里使用了修改/etc/profile的方法,修改后,重启,对所有用户都生效

但是一般来说,我们肯定是需要启动我们自己编写的nginx.conf,所以需要在启动的时候指定nginx.conf的位置

这样写的话必须写绝对路径,写相对路径会被拼接到/usr/local/。。。的nginx默认路径后面去,肯定就找不到nginx.conf了,就报错了。同时在nginx.conf文件中的一些东西也必须写绝对路径,例如我写个content_by_lua_file,后面的路径也不能是相对路径
这是因为没有指定前缀路径,就会使用默认的前缀路径,导致所有相对路径都出现问题,通过 -p指定路径,这样就可以愉快地写相对路径啦

修改了文件后,需要让nginx加载这些修改了的信息,可以通过重启nginx的方式,但是nginx也可以不重启,直接重新加载这些内容

当然也可以查找nginx的进程号,再用kill 指令向它发送消息,实现让它停止,重启,重加载等等。

[Nginx] 在Linux下的启动停止和重加载


Nginx的启动
 

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf  

其中-c参数指定配置文件路径。
 
Nginx的停止
Nginx支持以下几种信号控制:
- TERM, INT 快速关闭
- QUIT 从容关闭
- HUP 平滑重启
- USR1 重新打开日志文件,在切割文件时用处大
- USR2 平滑升级
- WINCH 从容关闭工作进程
我们可以通过信号停止Nginx主进程,首先,我们需要通过ps -ef|grep命令获得master进程的PID,或者通过cat pid文件获得主进程号。下面是几个典型的停止语句:

#从容停止Nginx  
kill -QUIT master进程号  
#快速停止Nginx  
kill -TERM master进程号  
#强制停止Nginx  
kill -9 master进程号  

 
 
Nginx的重加载
如果改变了配置文件,想重启让其生效,同样可以通过发送系统信号给Nginx主进程,不过,在重启之前,要确认配置文件的语法是正确的,否则将不会加载新的配置项。
通过以下语句测试配置文件语法是否正确:

/usr/local/nginx/sbin/nginx -t -c /www.qixoo.qixoo.com/usr/local/nginx/conf/nginx.conf  

 
其中-t表示测试,并不真正执行。
然后,通过以下命令重加载Nginx配置:

kill -HUP master进程号

执行上面命令之后,Nginx运行新的工作进程,旧工作进程继续为已有的连接服务,等所有旧的连接成功后,旧的工作进程才被关闭。

Nginx的启动脚本

#!/bin/sh  
# chkconfig: 2345 85 15  
# description:Nginx Server  
 
NGINX_HOME=/usr/local/nginx  
NGINX_SBIN=$NGINX_HOME/sbin/nginx  
NGINX_CONF=$NGINX_HOME/conf/nginx.conf  
NGINX_PID=$NGINX_HOME/logs/nginx.pid  
 
NGINX_NAME="Nginx"  
 
. /etc/rc.d/init.d/functions  
 
if [ ! -f $NGINX_SBIN ]  
then  
    echo "$NGINX_NAME startup: $NGINX_SBIN not exists! "  
    exit  
fi  
 
start() {  
    $NGINX_SBIN -c $NGINX_CONF  
    ret=$?  
    if [ $ret -eq 0 ]; then  
        action $"Starting $NGINX_NAME: " /bin/true  
    else  
        action $"Starting $NGINX_NAME: " /bin/false  
    fi  
}  
 
stop() {  
    kill `cat $NGINX_PID`  
    ret=$?  
    if [ $ret -eq 0 ]; then  
        action $"Stopping $NGINX_NAME: " /bin/true  
    else  
        action $"Stopping $NGINX_NAME: " /bin/false  
    fi  
}  
 
restart() {  
    stop  
    start  
}  
 
check() {  
    $NGINX_SBIN -c $NGINX_CONF -t  
}  
 
 
reload() {  
    kill -HUP `cat $NGINX_PID` && echo "reload success!"  
}  
 
relog() {  
    kill -USR1 `cat $NGINX_PID` && echo "relog success!"  
}  
 
case "$1" in  
    start)  
        start  
        ;;  
    stop)  
        stop  
        ;;  
    restart)  
        restart  
        ;;  
    check|chk)  
        check  
        ;;  
    status)  
        status -p $NGINX_PID  
        ;;  
    reload)  
        reload  
        ;;  
    relog)  
        relog  
        ;;  
    *)  
        echo $"Usage: $0 {start|stop|restart|reload|status|check|relog}"  
        exit 1  
esac

上面是nginx的启动脚本,只要把它拷贝至/etc/init.d目录下,就可以通过service nginx start等目录操作nginx。

除了上面介绍的直接发信号给Nginx主进程的方法之外,我们还可以通过nginx -s命令:

    stop — fast shutdown
    quit — graceful shutdown
    reload — reloading the configuration file
    reopen — reopening the log files









































































































































以上是关于nginx启动,重启,重新加载,以及前缀路径设置的主要内容,如果未能解决你的问题,请参考以下文章

使用Nginx命令启动,停止和重新加载Nginx

Nginx常用命令(启动/重启/停止/测试配置文件/重新加载配置文件)

Nginx常用命令(启动/重启/停止/测试配置文件/重新加载配置文件)

什么时候重启而不重新加载 Nginx?

linux 上修改了nginx.conf 怎么重新加载配置文件生效

[Nginx] 在Linux下的启动停止和重加载