Nginx 的启动

指定配置文件的方式启动nginx

# nginx -c /etc/nginx/nginx.conf

对于yum安装的nginx,使用systemctl命令启动

# systemctl start nginx

Nginx 的停止

从容停止

kill -QUIT Nginx主进程号

快速停止nginx

kill -TERM Nginx主进程号

强制停止所有nginx进程

pkill -9 nginx

Nginx的平滑重启

在修改了nginx配置文件后,在重启nginx之前,需要确认nginx配置文件的语法是否正确,可执行以下命令检测

# nginx -t -c /etc/nginx/nginx.conf

如上没有错误的话,就可以平滑重启了

# nginx -s reload

或者

kill -HUP Nginx主进程号

Nginx的平滑升级

对于编译安装的nginx,可以将新版本编译安装到旧版本的nginx安装路径中。替换之前,最好备份一下旧的可执行文件。

下载新版本nginx
# wget http://nginx.org/download/nginx-1.9.14.tar.gz 获取旧版本nginx的configure选项
# nginx -V 编译新版本nginx
# tar -zxvf nginx-1.9.14.tar.gz
# cd nginx-1.9.14
# ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_v2_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic'
# make 备份旧版本nginx可执行文件,使用新版本nginx可执行文件替代旧的可执行文件
# mv /usr/sbin/nginx /usr/sbin/nginx.old
# cp objs/nginx /usr/sbin/nginx

测试新版本nginx是否正常

nginx –t –c /etc/nginx/nginx.conf

平滑升级nginx,旧版本Nginx的pid变为oldbin,此时旧版本和新版本的nginx同时运行,共同处理完用户请求

kill -USR2 `cat /var/run/nginx.pid`

从容关闭旧版本的nginx进程

kill -WINCH `cat /var/run/nginx.oldbin`

一段时间后,旧版本的nginx进程处理了所有已连接的请求后退出,仅由新版本的nginx进程来处理输入的请求了,可以通过以下命令查看

# ps -ef | grep nginx

这时候,我们可以决定是使用新版本,还是恢复到旧版本

kill -HUP 旧的主进程号 :Nginx在不重载配置文件的情况下启动他的工作进程
kill -QUIT 新的主进程号 :从容关闭其工作进程
kill -TERM 新的主进程号 :强制退出
kill 新的主进程号或旧的主进程号:如果因为某些原因新的工作进程不能退出,则向其发送kill信号

新的主进程退出后,旧的主进程会移除 .oldbin 后缀,恢复为它 的 .pid 文件,这样,一切就恢复到升级之前了。

如果尝试升级成功,而你也希望保留新的服务器时,可发送 QUIT 信号给旧的主进程,使其退出而只留下新的服务器运行。

Nginx配置文件nginx.conf的结构

1. 全局块

2. events块

3. http块

4. server块

5. location块

基本配置

配置运行Nginx服务器用户(组)

user user [group];

配置允许生成的worker process数

work_processes number | auto;

配置Nginx进程PID存放路径

pid file;

配置错误日志的存放路径

error_log file | stderr [debug | info | notice | warn | error | crit | alert | emerg];

配置文件的引入

include file;

设置网络连接的序列化

accept_mutex on | off;

配置是否允许同时连接多个网络连接

multi_accept on | off;

事件驱动模型的选择

use method;

配置最大连接数

worker_connections number;

定义MIME-Type

include mime.types;
default_type application/octet-stream;

自定义服务日志

access_log path [format [buffer=size]];

配置允许sendfile方式传输文件

sendfile on | off;

配置连接超时时间

keepalive_timeout [header_timeout];

单连接请求数上限

keepalive_requests number;

配置网络监听

第一种配置监听的IP地址:

listen address[:port] [default_server] [setfib=number] [backlog=number] [rcvbbuf=size] [sndbuf=size] [deferred] [accept_filter=filter] [bind] [ssl];

第二种配置监听端口:

listen port [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [ssl];

第三种配置UNIX Domain Socket:

listen unix:path [default_server] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ssl];

基于名称的虚拟主机配置

# 虚拟主机的名称设置为mysever.com或www.myserver.com
server_name myserver.com www.myserver.com; # 使用通配符,通配符只能用在首段或尾段
server_name *.myserver.com www.myserver.*; # 使用正则表达式,~作为正则表达式的开始标记
server_name ~^www\d+\.myserver\.com$;

基于IP的虚拟主机配置

如果只有一个网卡,可以添加多个IP别名

查看网卡信息

# nmcli con show

查看IP信息

# ip addr

添加网卡别名

# nmcli con mod eth0 +ipv4.addresses  10.10.10.21/24

重新加载网卡配置

# nmcli con load /etc/sysconfig/network-scripts/ifcfg-eno16777736
# nmcli dev connect eno16777736

重新查看IP信息

# ip addr

相关配置片段:

...
http
{
server
{
listen: 80;
server_name: 10.10.10.20;
...
}
server
{
listen: 80;
server_name: 10.10.10.21;
...
}
...
}

配置location块

location = [= | ~ | ~* | ^~ ] uri { ... }

"=" 用于标准uri前,要求请求字符串与uri严格匹配。

"~" 用于表示uri包含正则表达式,并且区分大小写。

"~*" 用于表示uri包含正则表达式,并且不区分大小写。

"^~" 用于标准uri前,要求Nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。

配置请求的根目录

root path;

更改location的URI

alias path;

设置网站的默认首页

index file ...;

设置网站的错误页面

error_page code ... [=[redponse]] uri

基于IP配置Nginx的访问权限

allow address | CIDR | all;
deny address | CIDR | all;

CentOS7上Nginx的使用的更多相关文章

  1. asp.net Core 部署到CentOs7上,使用Nginx做代理

    一.CentOs7部署Nginx 1.准备工作 Nginx的安装依赖于以下三个包,意思就是在安装Nginx之前首先必须安装一下的三个包,注意安装顺序如下: 1 SSL功能需要openssl库,直接通过 ...

  2. .Net Core在Centos7上初体验

    本文主要内容是简单介绍如何在centos7上开发.Net Core项目,在此之前我们首先了解下.Net Core的基本特性. 1 .Net Core和.Net FrameWork的异同 1.1 .Ne ...

  3. 在阿里云ECS CentOS7上部署基于MongoDB+Node.js的博客

    前言:这是一篇教你如何在阿里云的ECS CentOS 7服务器上搭建一个个人博客的教程,教程比较基础,笔者尽可能比较详细的把每一步都罗列下来,包括所需软件的下载安装和域名的绑定,笔者在此之前对Linu ...

  4. 部署文档(centos7.x\nginx\mysql5.6\jdk1.8\ssl\jboot)

    部署文档(centos7.x\nginx\mysql5.6\jdk1.8\ssl\jboot) 1.基础环境********************************************** ...

  5. Centos7安装Nginx实战

    一.背景 最近在写一些自己的项目,用到了nginx,所以自己动手来在Centos7上安装nginx,以下是安装步骤. 二.基本概念以及应用场景 1.什么是nginx Nginx是一款使用C语言开发的高 ...

  6. CentOS7上部署ASP.Net Core 2.2应用

    前言 在CentOS7上部署ASP.Net Core应用是我的技术路线验证的一部分,下一个产品计划采用ASP.Net Boilerplate Framework开发.因此需要求提前进行一下技术验证,在 ...

  7. centos7上systemd详解

    centos7上systemd详解  发表于 2016-06-07 |  分类于 linux CentOS 7继承了RHEL 7的新的特性,例如强大的systemd, 而systemd的使用也使得以往 ...

  8. linux(centos7) 安装nginx

    linux(centos7) 安装nginx 1.14(stable) 版本 Nginx配置文件常见结构的从外到内依次是「http」「server」「location」等等,缺省的继承关系是从外到内, ...

  9. centos7上部署新版 jumpserver 跳板机服务

    CentOS 7 建议在一个纯净的 centos7上进行下面的安装部署 关闭 selinux 和防火墙 [root@jumpserver ~]# setenforce 0 [root@jumpserv ...

随机推荐

  1. 【UVAlive 3989】 Ladies' Choice (稳定婚姻问题)

    Ladies' Choice Teenagers from the local high school have asked you to help them with the organizatio ...

  2. HDU 3308 LCIS 线段树区间更新

    最近开始线段树一段时间了,也发现了不少大牛的博客比如HH大牛  ,小媛姐.这个题目是我在看HH大牛的线段树专题是给出的习题,(可以去他博客找找,真心推荐)原本例题是POJ3667 Hotel 这个题目 ...

  3. SPRING IN ACTION 第4版笔记-第二章WIRING BEANS-008-在Java配置文件中引入xml配置文件@Import、@ImportResource

    1. package soundsystem; import org.springframework.beans.factory.annotation.Autowired; public class ...

  4. AsyncHttpClient 开源框架學習研究

    转载请注明出处:http://blog.csdn.net/krislight OverView: AsyncHttpClient庫 基於Apache的HttpClient框架,是一個異步的httpCl ...

  5. IIS7部署ASP.NET MVC4程序报错解决

    今天安装了windows7 开发web项目需要安装IIS,当安装完以后,web程序已经映射到了本地IIS上,运行出现如下错误提示 处理程序“PageHandlerFactory-Integrated” ...

  6. 微软Sharepoint的一些缺点

    转:http://bbs.tianya.cn/post-144-566491-1.shtml 微软Sharepoint的一些缺点(一) 微软Sharepoint的一些缺点 关于SharePoint,它 ...

  7. OpenJDK 8 on Windows

    OpenJDK官网提供了非Windows已编译版本的下载. JDK 8的Windows安装版本目前网上提供有两种版本: 1.RED HAT发布的OpenJDK 8 Windows版 2.ojdkbui ...

  8. python 零散记录(四) 强调字典中的键值唯一性 字典的一些常用方法

    dict中键只有在值和类型完全相同的时候才视为一个键: mydict = {1:1,':1} #此时mydict[1] 与 mydict['1']是两个不同的键值 dict的一些常用方法: clear ...

  9. 让你的Git水平更上一层楼的10个小贴士

    注意:本文中,一些命令包含含有方括号的部分(e.g.git add -p [file_name]).在这些例子中,您要在该处插入所需的数字,标示符等.而不需要保留方括号. 1.Git自动补全 如果你在 ...

  10. linux学习笔记---未完待续,缓慢更新

    做为linux菜鸟,由于work的需要,慢慢的开始接触学习linux. <鸟哥的linux私房菜>学习笔记. 一.基础命令操作 1.显示日期的命令 date 执行date命令后,显示结果为 ...