nginx安装和简单使用
Ubuntu安装nginx
- 安装nginx
su root #切换成root用户
apt install nginx
- 检查是否安装完成
nginx -v
出现如下信息,说明安装成功
- 启动nginx
service nginx start
如是启动报错,查看默认端口80是否被占用
netstat -ntlp
如是出现下图信息,说明端口被占用,解决方案:1,杀死占用端口的进程;2,修改nginx端口
- 杀死占用端口进程:
1、 查看被占用端口的PID:lsof -i tcp:80
2、kill掉该进程
kill -9 PID #这里的pid是32284
- 修改端口
cd /etc/nginx #切换到根目录
vi nginx.conf #打开配置文件
发现配置文件中没有端口配置,而是进入了两个配置文件夹conf.d和/sites-enabled/,打开文件夹conf.d发现是空文件夹,打开/sites-enabled文件夹发现只有一个文件default,打开文件
vi default
将这里的80修改为你想要的端口
- 启动nginx
访问主机ip:端口号出现如下界面说明安装成功
简单使用
- 路由配置访问静态资源
进入conf.d文件夹创建文件static.conf (必须以.conf结尾,因为nginx会把conf.d文件夹下的以.conf结尾的文件当作配置文件,这是因为在nginx.conf文件中配置的),输入以下内容保存server { listen 8082 default_server; listen [::]:8082 default_server; include snippets/snakeoil.conf; server_name _; location / { root /usr/share/nginx/html; try_files $uri $uri/ =404; } location /html { root /var/www/; #此处指向apache默认初始页面 try_files $uri $uri/ =404; } }
刷新nginx的配置信息
nginx -s reload
浏览器访问ip:port 出现如下界面
浏览器访问ip:port/html 出现如下界面
-
nginx中location对url匹配:
语法:location [=||*|^~] /uri/ { … }
当匹配中符合条件的location,则执行内部指令;如果使用正则表达式,必须使用*表明不区分大小写或者区分大小写匹配;
如果不是用正则表达式;可使用=严格匹配;
指令按下列顺序被接受:
1、 =前缀的指令严格匹配这个查询;如果找到停止往下匹配
2、挣下的常规字符串,长的在前,如果这个匹配使用^~前缀,匹配停止;
3、 正则表达式,按配置文件的顺序;
4、 如果第三步产生匹配。则使用这个结果;停止匹配;否则使用第二部的匹配结果;四个案例:
location = / {
#只匹配/查询
}
location / {
#匹配任何查询,所有请求都是以/开头。但是正则表达式规则和长的块规则将被优先匹配和查询;
}
location ^~ /images/ {
# 匹配任何以 /images/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。
}
location ~* .(gif|jpg|png)${
#匹配任何以gif、jpg、png结尾的请求。然后所有/images/目录的请求将使用第三个
} -
反向代理
在conf.d文件夹创建文件forwardagent.conf,输入以下内容保存server{ listen 81; server_name _; proxy_buffering on; #开启代理 #指定来自客户端请求头的hearerbuffer大小 client_header_buffer_size 32k; #指定客户端请求中较大的消息头的缓存最大数量和大小。 large_client_header_buffers 4 6k; #客户端连接超时时间,单位是秒 keepalive_timeout 60; #客户端请求头读取超时时间 client_header_timeout 10; #设置客户端请求主体读取超时时间 client_body_timeout 10; #响应客户端超时时间 send_timeout 10; location / { proxy_pass http://10.42.1.22:8082/; #被代理服务器的协议和地址。 }
}
```
刷新nginx的配置信息, 浏览器访问 主机ip:port出现被代理的网站首页界面
- 负载均衡
在conf.d文件夹下创建loadbalancing.conf配置文件,内容如下upstream name { server 10.42.1.22:8082; server 127.0.0.1:80; } server { listen 8081; server_name _; location / { proxy_pass http://name; } }
刷新nginx的配置信息, , 浏览器访问 主机ip:port, 这里使用两个不同的网站被代理,因此多次刷新会循环代理到两个不同的网站(默认使用RR即轮询法)
- 源地址哈希法:根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。
配置:
upstream name {
ip_hash;
server 10.42.1.22:8082;
server 127.0.0.1:80;
}
-
轮询法:将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。(默认)
-
加权轮询法:不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。
配置:
upstream name {
server 10.42.1.22:8082 weight=1;
server 127.0.0.1:80 weight=2;
}
- 最少连接数: 请求将转发到连接数较少的服务器上
upstream name {
least_conn;
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}