1. nginx的作用
- 1.1 反向代理
* nginx作为代理服务器接受intenet上的连接请求
* 将请求转发到内部的应用服务器上
* 将应用服务器上得到的结果返回给Internet上请求链接的客户端
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host:$server_port;
}
}
- 1.2 负载均衡
* 负载均衡即将请求分摊到多个操作单元上,一般与反向代理一同配置。
* nginx支持自带的3种负载均衡策略
1.2.1.RR(默认)
概述:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down机能自动剔除
例如:
upstream test {
server localhost:8080;
server localhost:8081;
}
server {
listen 81;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass http://test;
proxy_set_header Host $host:$server_port;
}
}
1.2.2.权重
概述:指定轮询机率,wight和访问比率成正比;适用于后端服务器性能不均的情况。
例如:
upstream test {
server localhost:8080 weight=9;
server localhost:8081 weight=1;
}
1.2.3.ip_hash
概述:
ip_hash的请求按IP的hash值分配,可以保证客户端IP不变的情况下始终访问一个固定
的后端服务器。可以解决有状态服务用户多次请求重新登录的问题,无状态服务不存在该问题
例如:
upstream test{
ip_hash;
server localhsot:8080;
server localhsot:8081;
}
- 1.3 http服务器
作为静态资源服务器。
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
root e:\wwwroot;
index index.html;
}
}
2. nginx配置
- nginx的配置文件
- event {} 为连接配置模块
- http {} 为nginx http核心配置模块
- serve {} 为虚拟主机配置模块,包括端口和域名的监听
- location {} 为URI匹配模块
- upstream {} 为负载均衡配置模块
location匹配规则:
表示 | 描述 |
---|---|
location = /uri地址 | =开头表示精确匹配,只有完全匹配上才能生效。 |
location ^~ /uri地址 | ^~ 开头对URL路径进行前缀匹配,并且在正则之前。 |
location ~ 正则表达式 | ~开头表示区分大小写的正则匹配。 |
location ~* 正则表达式 | ~*开头表示不区分大小写的正则匹配。 |
location /uri地址 | 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后。 |
location / | 通用匹配,拦截所有,但是优先级最低,只有前面都没有被拦截的情况下,才会被拦截到这里。 |
#指定工作进程数(一般设置为cpu的核数)
worker_processes 1;
events{
#指定每个工作进程的最大连接数
worker_connections 1024;
}
http{
# 配置负载的ip或域名、负载方式
upstream test{
server localhsot:8080;
server localhsot:8081;
}
server{
liten 80;
server_name localhost;
location / {
proxy_pass http://test;
proxy_set_header Host $host:$server_port;
}
}
}
3.热部署
情景:
当我们修改了nginx的配置文件后不需要杀死进程重新启动,通过以下命令实现快速
启动:在nginx的bin目录下执行:nginx -s reload
4.日志查看
- 日志文件路径:/usr/local/openresty/nginx/logs (取决于自己实际安装的位置)
- 我们需要在nginx.conf文件中定义日志路径
access.log:连接日志
error.log:错误日志
nginx.pid:记录进程的pid
- 通过tail -f 查看日志文件: