nginx的下载路径:http://nginx.org/en/download.html
启动nginx : start nginx
重启nginx: nginx -s reload
快速停止nginx:nginx -s stop
有序的关闭nginx:nginx -s quit
检查配置文件是否正确,返回success就正确:nginx -t -c /nginx-1.15.2/conf/nginx.conf
nginx.conf 文件详解:
基本配置:
#user nobody; #配置用户或者组,默认为nobody
worker_processes 1; #允许生成的进程数,默认为1
#error_log logs/error.log; #制定日志路径,级别,这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; #指定nginx进程运行文件存放地址
events块配置:配置影响nginx服务器与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网络连接,开启多个网络连接序列化等
accept_nutex on; #设置网络连接序列化,防止惊群发生,默认为on
multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
#user epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|dev|poll|eventport
worker_connections 1024; #最大连接数,默认为1024
**http块配置:**可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引用,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
#配置nginx支持哪些文件扩展名与文件类型映射表。在conf/mime.types查看支持哪些类型
include mime.types
#默认文件类型(流)类型,支持很多文件,图片,js/css等
default_type application/octet-stream
#access_log logs/access.log main; #combined为日志格式的默认值
#优化参数 允许sendfile方式传输文件,开启高效传输模式
sendfile on;
#tcp_nopush on; #防止网络阻塞
keepalive_timeout 65; #长连接超时时间(秒)
#gzip on; #开启gzip压缩
静态文件配置方法:
在nginx文件夹下新建static 然后里面在建一个文件夹在放进去
然后在nginx.conf这里配置路径
location / {
root E:/ketai/nginx-1.16.1/static/baby_p2p;
index index.html index.htm;
}
方向代理方法:
location / {
proxy_pass http://localhost:8080;
}
动静分离:
动态资源:如jsp由tomcat或其他web服务器处理
静态资源:如图片,css,js等由nginx服务器完成
代码示例:
location ~ \.jsp$ {
proxy_pass http://localhost:8080;
# index index.html index.htm;
}
location ~ \.(html|js|css|images|png|gif|jpg)$ {
root E:/ketai/nginx-1.16.1/static/baby_p2p;
}
~表示正则匹配,后面的内容可以是正则表达式匹配
.点表示任意字符
*表示一个或多个字符
\.是转移字符
|表示或
$表示结尾
整个配置代表括号晨面的后缀请求都由nginx处理
集群:
配置服务器组,在http节点之间添加upstream配置(注意不要写localhost,不然访问速度会很慢)
upstream nginxCluster{
server 127.0.0.1:8080;
server 127.0.0.1:8081:
}
然后把
location / {
proxy_pass http://localhost:8080;
}
#改成
location / {
proxy_pass http://nginxCluster;
}
负载均衡:
规则:
1.轮询(默认):
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
2.指定轮询几率:
weight和访问比率成正比,用于后端服务器性能不均的情况下默认选项,当weight不指定时,各服务器weight相同,(weight=1)
3.ip_hash
每个请求按访问的ip的hash值分配,这样同一客户端连续的web请求都会被分发到同一服务器进行处理,可以解决session的问题。当后台服务器宕机时,会自动跳转到其他服务器。
集群下session的解决方案:
Session保持
Session复制
Session共享
Session保持:
就是把用户锁到了一台服务器上
优点:非常简单,不需要对session做任何处理
缺点:负载不均衡了,如果这台服务器宕机了数据还是会丢失
Session复制:
就是在每台服务器上都保存一份用户信息,当有一台挂掉时会把session的内容序列化然后广播给他
优点:可容错
缺点:会对网络负荷造成一定的压力
可以用tomcat实现
Session共享:
Redis Cluster 解决session共享问题
spring-session+Redis实现Session共享