kill命令格式:
kill 是向进程发送信号的命令。
Nginx的信号
1)、TERM、INT 快速关闭
2)、QUIT从容关闭
3)、HUP平滑重启,重新加载配置文件
4)、USR1 重新打开日志文件
5)、USR2 平滑升级可执行程序
KILL 9 强制终止,直接杀
nginx 如果需要使用从属文件在主文件配置
include /etc/nginx/conf.d/*.conf;
Nginx管理虚拟主机
虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW、FTP、Email等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样。
利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在同一台服务器、同一组Nginx进程上运行多个网站的功能。
基于域名的虚拟主机
server {
#监听端口 80
listen 80;
#监听域名abc.com;
server_name abc.com;
location / {
# 相对路径,相对nginx根目录。也可写成绝对路径
root abc;
# 默认跳转到index.html页面
index index.html;
}
}
基于端口的虚拟主机配置
server {
listen 2022;
server_name abc.com;
location / {
root /home;
index index.html;
}
}
基于IP地址虚拟主机配置
server {
listen 80;
server_name 192.168.197.142;
location / {
root ip;
index index.html;
}
}
Location语法规则
1.1 Location规则
语法规则: location [=|~|~*|^~] /uri/ {… }
首先匹配 =,其次匹配^~,其次是按文件中顺序的正则匹配,最后是交给 /通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。
符号 | 含义 |
= | = 开头表示精确匹配 |
^~ | ^~开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格) |
~ | ~ 开头表示区分大小写的正则匹配 |
~* | ~* 开头表示不区分大小写的正则匹配 |
!~和!~* | !~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则 |
/ | 用户所使用的代理(一般为浏览器) |
$http_x_forwarded_for | 可以记录客户端IP,通过代理服务器来记录客户端的ip地址 |
$http_referer | 可以记录用户是从哪个链接访问过来的 |
Location解析过程
server {
listen 80;
server_name location.enjoy.com;
location /a {
rewrite ^/ /a.html break;
root html/static/;
}
location /b/a {
rewrite ^/ /b.html break;
root html/static/;
}
location /b/d/a {
rewrite ^/ /d.html break;
root html/static/;
}
location ^~/b/c/a {
rewrite ^/ /d.html break;
root html/static/;
}
location ~ /b/d {
rewrite ^/ /c.html break;
root html/static/;
}
location ~ /b/d/a {
rewrite ^/ /a.html break;
root html/static/;
}
}
Rewrite的使用
rewrite regex replacement [flag];
rewrite ^/rout/(.*) $1.html break;
负载均衡配置
1、轮询(默认)
upstream nginx {
server 172.17.0.4:8081;
server 172.17.0.5:8081;
}
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。down 暂时不参与负载
例如:
upstream nginx {
server 172.17.0.4:8081 weight=2;
server 172.17.0.5:8081 weight=1;
}
2、ip_hash
每个请求按访问ip的hash结果分配,这样同一客户端的请求总是发往同一个后端服务器,可以解决session的问题。
例如:
upstream nginx {
ip_hash;
server 172.17.0.4:8081;
server 172.17.0.5:8081;
}
实战
配置:
172.17.0.2作为代理nginx
172.17.0.3作为静态服务器,读html文件
172.17.0.4为后台服务器1,提供web服务
172.17.0.5为后台服务器2,提供web服务
172.17.0.2作为反向代理,有以下配置:
后台代理:
upstream nginx {
# ip_hash;
server 172.17.0.4:8081 weight=2;
server 172.17.0.5:8081 weight=1;
}
server {
listen 80;
server_name www.enjoy.com;
location /proxy {
proxy_pass http://172.17.0.4:8081/nginx/;
}
location /nginx {
proxy_pass http://nginx;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
html代理:
location /static {
proxy_pass http://rewrite.enjoy.com/;
}
location和rewrite进阶:
nginx运行阶段: rewrite 阶段、access 阶段以及 content 阶段
不按代码顺序执行,是按阶段执行,顺序如下:
先执行命中的所有rewrite层指令(下面的set),再执行access,再执行content(下面的echo)
语法:
location = / {
set $a 32;
echo $a;
set $a 64;
echo $a;
}
笔记