Nginx的配置与使用
1 (1)gcc坏境 2 yum install gcc-c++ 3 (2)PCRE,用于解析正则表达式 4 yum install -y pcre pcre-devel 5 (3)zlib压缩和解压缩依赖 6 yum install -y zlib zlib-devel 7 (4)SSL安全加密的套接字协议层,用于HTTP安全传输 8 yum install -y openssl openssl-devel
(1)创建文件夹: mkdir -p /data0/nginx (2)将压缩文件上传到/data0/nginx文件夹中 (3)解压缩文件 tar -zxvf nginx-1.20.2.tar.gz (4)删除压缩包 rm -rf nginx-1.20.2.tar.gz
(1)进入安装目录 cd /data0/nginx/nginx-1.20.2 (2)执行./configure 配置命令 ./configure --prefix=/data0/nginx/ --with-stream --with-http_stub_status_module --with-http_ssl_module (3)安装nginx make && make install
检测 /data0/nginx/sbin/nginx -t 启动 /data0/nginx/sbin/nginx 停止 /data0/nginx/sbin/nginx -s stop 重载 /data0/nginx/sbin/nginx -s reload
启动 ./nginx 停止(立刻) ./nginx -s stop 停止(等请求处理完) ./nginx -s quit 热部署启动 ./nginx -s reload 查看版本 ./nginx -v 测试配置文件 ./nginx -t
#全局块 #默认nodody,所有用户都可以使用 #user nobody; #设置工作线程数,一般与cpu核数一致,才能发挥出cpu的性能 worker_processes 1; events { #网络IO模型,默认是epoll,多路并发 # use epoll #设置每个worker的最大连接数 worker_connections 1024; } http { #引入文件 include mime.types; # 配置默认类型,如果不加此指令,默认值为text/plain。 default_type application/octet-stream; # 日志格式 #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #配置是否开启文件发送 sendfile on; #开启后文件达到一定数量才开始发送 #tcp_nopush on; # 配置连接超时时间 keepalive_timeout 65; #是否开启文件压缩 gzip on; # 上游服务器设置 upstream server_name { #负载均衡策略 # 1、轮询 2、weight 3、ip_hash 4、fair 5、url_hash # 轮询(负载均衡默认) # weight(默认权重就是1) # ip_hash(用户的所有请求回落到一台服务器上,避免session共享问题) # fair(按后端服务器的响应时间来分配请求,响应时间短的优先分配) # url_hash(按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器) # 设备状态 server address [ parameters ] # down 表示当前设备停用(设备有问题不能直接删除,要设为down,因为ip_hash是根据总设备数来分配请求的,直接删除会导致前后请求不在同一台服务器上) # backup 备份。只有其他服务器全都停机,才会使用该服务 # max_fails 允许服务处理请求时服务出错的次数,默认为1,设为0表示取消该检查 # fail_timeout 表示连接超时时间。max_fails和fail_timeout一般组合使用。当服务处理请求发生错误的次数超过max_fails以后,nginx会暂时禁止将请求转发到这个服务。当过去fail_timeout设置的时间以后,nginx会尝试将请求转发到刚才被禁止的服务,如果服务正常,那么后续的请求可以继续转发到这台服务,如果服务错误,那么继续等待fail_timeout时间后再来检测。fail_timeout默认时间是10s。(开启,挂掉,在开启看会不会访问到这台服务器上) # slow_start 缓慢启动(这个功能存在于nginx商业版。当集群中错误服务等待fail_timeout时间后,nginx检测到这个服务能够正常使用后,再等待slow_start时间后,才正式使用这个服务。) # 其他配置 #keepalive:限制空闲长连接的最大数量。 #keepalive_timeout:空闲长连接的最长保持时间。 #keepalive_requests:每个长连接最多可以处理的请求数。 server 1.15.131.114:8080 ; } server { #监听的端口 listen 80; #配置虚拟主机的名称 server_name localhost; # 编码 #charset koi8-r; #访问日志 #access_log logs/host.access.log main; location / { #root用于设置请求寻找资源的跟目录 root html; index index.html index.htm; } # 错误跳转页面 error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
配置nginx.conf
location /img/ { root /home/resource/static/; #自动创建索引 autoindex on; }
路径为/img会被匹配到,然后去服务器/home/resource/static/img/下找对应的图片。
附
location /img/ { root /home/resource/static/; #自动创建索引 autoindex on; }
alias:给路径起别名
location /img/ { alias /home/resource/static/img/; #自动创建索引 autoindex on; }
location / { root /home; }
location = /imooc/img/face1.png { root /home; }
#符合图片的显示 location ~* .(GIF|jpg|png|jpeg) { root /home; }
#GIF必须大写才能匹配到 location ~ .(GIF|jpg|png|jpeg) { root /home; }
location ^~ /imooc/img { root /home; }
Nginx有4中负载均衡策略
1、轮询(默认)
一个接着一个分发请求
2、权重
根据权重分发请求
3、ip_hash
用户的请求会落到一台服务器上,解决了session共享问题
4、fair
根据服务器情况分发
准备-linux上部署两个tomcat
配置Nginx.conf文件
upstream myserver { server 1.15.131.114:8080 weight=1; server 1.15.131.114:8081 weight=2; } server { listen 80; server_name myserver; location / { proxy_pass http://myserver; } }
根据方法做hash运算分发请求
准备:两个项目,相同接口,返回接口显示各自的端口号。
@GetMapping("/rain") public String rain(){ return "8088=>" + "少年听雨歌楼上,红烛昏罗帐。 \n壮年听雨客舟中, 江阔云低,断雁叫西风。 \n而今听雨僧庐下,鬓已星星也。 \n悲欢离合总无情,一任阶前,点滴到天明。"; } @GetMapping("/miss") public String miss(){ return "8088=>" + "一重山,两重山,\n" + "山远天高烟水寒,相思枫叶。\n" + "菊花开,菊花残,\n" + "塞雁高飞人未还,一帘风月闲。"; }
Nginx配置
upstream javaserver { # 一致性hash算法 hash $request_uri consistent; server 1.15.131.114:8088; server 1.15.131.114:8089; } server { listen 90; server_name javaserver; #允许跨域请求的域,*代表所有 add_header 'Access-Control-Allow-Origin' *; #允许带上cookie请求 add_header 'Access-Control-Allow-Credentials' 'true'; #允许请求的方法,比如 GET/POST/PUT/DELETE add_header 'Access-Control-Allow-Methods' *; #允许请求的header add_header 'Access-Control-Allow-Headers' *; location / { proxy_pass http://javaserver; } }
访问页面
8089
8088
作者:lincaomei
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!