CentOS7上Nginx的使用,CentOS7Nginx使用
CentOS7上Nginx的使用,CentOS7Nginx使用
Nginx 的启动
指定配置文件的方式启动nginx
1 |
#
nginx -c /etc/nginx/nginx.conf
|
对于yum安装的nginx,使用systemctl命令启动
1 |
#
systemctl start nginx
|
Nginx 的停止
从容停止
1 |
kill -QUIT
Nginx主进程号
|
快速停止nginx
1 |
kill -TERM
Nginx主进程号
|
强制停止所有nginx进程
1 |
pkill
-9 nginx
|
Nginx的平滑重启
在修改了nginx配置文件后,在重启nginx之前,需要确认nginx配置文件的语法是否正确,可执行以下命令检测
1 |
#
nginx -t -c /etc/nginx/nginx.conf
|
如上没有错误的话,就可以平滑重启了
1 |
#
nginx -s reload
|
或者
1 |
kill -HUP
Nginx主进程号
|
Nginx的平滑升级
对于编译安装的nginx,可以将新版本编译安装到旧版本的nginx安装路径中。替换之前,最好备份一下旧的可执行文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
下载新版本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是否正常
1 |
nginx
–t –c /etc/nginx/nginx .conf
|
平滑升级nginx,旧版本Nginx的pid变为oldbin,此时旧版本和新版本的nginx同时运行,共同处理完用户请求
1 |
kill -USR2
` cat /var/run/nginx .pid`
|
从容关闭旧版本的nginx进程
1 |
kill -WINCH
` cat /var/run/nginx .oldbin`
|
一段时间后,旧版本的nginx进程处理了所有已连接的请求后退出,仅由新版本的nginx进程来处理输入的请求了,可以通过以下命令查看
1 |
#
ps -ef | grep nginx
|
这时候,我们可以决定是使用新版本,还是恢复到旧版本
1 2 3 4 |
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服务器用户(组)
1 |
user
user [group];
|
配置允许生成的worker process数
1 |
work_processes
number | auto;
|
配置Nginx进程PID存放路径
1 |
pid file ;
|
配置错误日志的存放路径
1 |
error_log file |
stderr [debug | info | notice | warn | error | crit | alert | emerg];
|
配置文件的引入
1 |
include file ;
|
设置网络连接的序列化
1 |
accept_mutex
on | off;
|
配置是否允许同时连接多个网络连接
1 |
multi_accept
on | off;
|
事件驱动模型的选择
1 |
use
method;
|
配置最大连接数
1 |
worker_connections
number;
|
定义MIME-Type
1 2 |
include
mime.types;
default_type
application /octet-stream ;
|
自定义服务日志
1 |
access_log
path [ format [buffer=size]];
|
配置允许sendfile方式传输文件
1 |
sendfile
on | off;
|
配置连接超时时间
1 |
keepalive_timeout
[header_timeout];
|
单连接请求数上限
1 |
keepalive_requests
number;
|
配置网络监听
第一种配置监听的IP地址:
1 |
listen
address[:port] [default_server] [setfib=number] [backlog=number] [rcvbbuf=size] [sndbuf=size] [deferred] [accept_filter=filter] [bind] [ssl];
|
第二种配置监听端口:
1 |
listen
port [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [ssl];
|
第三种配置UNIX Domain Socket:
1 |
listen
unix:path [default_server] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ssl];
|
基于名称的虚拟主机配置
1 2 3 4 5 6 7 8 |
#
虚拟主机的名称设置为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别名
查看网卡信息
1 |
#
nmcli con show
|
查看IP信息
1 |
#
ip addr
|
添加网卡别名
1 |
#
nmcli con mod eth0 +ipv4.addresses 10.10.10.21/24
|
重新加载网卡配置
1 2 |
#
nmcli con load /etc/sysconfig/network-scripts/ifcfg-eno16777736
#
nmcli dev connect eno16777736
|
重新查看IP信息
1 |
#
ip addr
|
相关配置片段:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
...
http
{
server
{
listen:
80;
server_name:
10.10.10.20;
...
}
server
{
listen:
80;
server_name:
10.10.10.21;
...
}
...
}
|
配置location块
1 |
location
= [= | ~ | ~* | ^~ ] uri { ... }
|
"=" 用于标准uri前,要求请求字符串与uri严格匹配。
"~" 用于表示uri包含正则表达式,并且区分大小写。
"~*" 用于表示uri包含正则表达式,并且不区分大小写。
"^~" 用于标准uri前,要求Nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。
配置请求的根目录
1 |
root
path;
|
更改location的URI
1 |
alias path;
|
设置网站的默认首页
1 |
index file ...;
|
设置网站的错误页面
1 |
error_page
code ... [=[redponse]] uri
|
基于IP配置Nginx的访问权限
1 2 |
allow
address | CIDR | all;
deny
address | CIDR | all;
|
评论暂时关闭