Nginx
介绍:
nginx操作的常用命令
1.需要进入/usr/local/sbin下
查看版本号:./nginx -v
启动nginx: ./nginx 查看端口情况 ps -ef | grep nginx
关闭nginx: ./nginx -s stop
修改配置文件后重加载:./nginx -s reload
配置文件
位置:usr/local/nginx/conf/nginx.conf
组成部分:1>全局块:设置一些影响nginx服务整体运行的配置指令 , 如worker_process,值越大,
处理并发量越多
2>events块:配置服务器与有湖网络连接部分,如worker_connections 1024 , 支持最大连接数
3>http块:配置最频繁的部分,反向代理,负载哦,动静又分为两部分:
1,server块 : listen 80 :监听端口,
2,location块:
配置反向代理
使用nginx反向代理,根据访问的路径跳转到不同端口的服务中,设置nginx的监听端口为9001
实现效果:
访问http://127.0.0.1:9001/edu/ , 跳到127.0.0.1:8080中
访问http://127.0.0.1:9001/vod/ , 跳转到127.0.0.1:8081中
准备工作:
两个tomcat服务器,一个端口为8080 , 一个为8081 ,
在webapps 下创建两个文件夹edu(8080.html),vod(8081.html),
在nginx.conf中配置
1,监听端口:listen:9001
2, server_name: ip地址(我这里用本地127.0.0.1)
3 , 配置转发路径:
server { listen 9001; server_name 127.0.0.1; location ~/edu/ { proxy_pass http://127.0.0.1:8080 } location ~/vod/ { proxy_pass http://127.0.0.1:8081 } }
= : 用于不含正则表达式的url,要求请求字符串与url严格匹配,
~ :用于表示url包含正则表达式,区分大小写
~* :不区分大小写
windows系统访问linux系统中的Nginx,默认不能访问,因为防火墙问题
解决办法:1.关闭防火墙,2.开放访问的端口
命令:
查看开放的端口:firewall-cmd --list-all
设置开放端口:firewall-cmd --add-service=http --permanent
firewall-cmd --add-port=端口号/tcp --permanent
重启防火墙:firewall-cmd --reload
结果:
配置负载均衡
通过增加服务器的数量,然后将请求分发到各个服务器上
实现效果:浏览器输入 http://127.0.0.1/edu/edu.html ,nginx将请求均衡到8080和8081
准备工作:两台tomcat服务器,一台8080,一台8081
在两个tomcat的webapps目录中创建edu文件,在edu下创建edu.html文件
nginx.conf配置
upstream myserver { //myserver为服务名,自己指定
server 127.0.0.1:8080; 需要负载到的服务器列表
server 127.0.0.1:8081;
}
server {
listen 80; //nginx监听端口
server_name 127.0.0.1;
location / {
proxy_pass http://myserver; //加上自己定义的服务名
root html;
index index.html index.htm;
}
测试结果:80,81交替服务,实现了负载均衡
负载均衡策略:
一:轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后段服务器挂掉,能自动剔除
二:weight(权重策略):默认为1,权重越高被分配的客户端就越多,
upstream myserver {
server 127.0.0.1:8080 weight=10;
server 127.0.0.1:8081 weight=5;
}
三:ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个服务器,可以解决session共享问题,如第一次访问的是8080,以后用同一ip访问,也都是走8080端口
upstream myserver {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
四:fair分配:根据后端响应时间来分配,时间越短的优先分配
upstream myserver { fair; server 127.0.0.1:8080; server 127.0.0.1:8081; }
Nginx动静分离
将动态资源(servlet.jsp.访问数据库等)和静态资源(html,css,image等)分离,提高访问效率
两种方案:
1:将静态文件独立成单独的域名,放在独立的服务器,也是目前主流方案
2:动态和静态文件混合一起发布,通过nginx来分开,
准备工作:
1.在linux系统中准备一些静态资源,在根目录下建一个data文件夹,里面方图片和html
配置nginx.conf
server { listen 80; server_name 127.0.0.1; location /www/ { //html文件路径 root /data/; index index.html index.htm; } location /image/ { //图片路径 root /data/; autoindex on; //列出目录 } }
结果:
Nginx高可用
简单来说就是当主服务器宕机时能够服务转移到从服务器
准备工作:
1.两台服务器
2.两台服务器都安装nginx
3.两台服务器都安装keepalived(切换作用),安装位置在 /etc/keepalived/keepalived.conf
高可用的配置(修改keeepalived.conf):
1keeepalived.conf主要三个部分:
(1):global_defs:全局配置
里面最重要的是:router_id 主机名 //作用是访问到主机
(2):vrrp_script chk_http_port:脚本配置
script 脚本文件地址 //脚本文件的地址,具体内容在底下
interval 2 //检测脚本执行的时间,这里是每2秒执行一次
weight 20 //权重
(3): vrrp_instance VI_1 : 虚拟主机配置
state MASTER //设置是主服务器还是从服务器,这里是主
interface ens33 //网卡,这里网卡是ens33,可通过ifconfig命令查看
virtual_router_id 88 //主从服务器的id标识,两个必须相同
priority 100 //主从服务器的优先级,一般主机较大,从机较小
advert_int 1 //检测心跳,就是多久检测以下这台主机是否还活着,这里设置为1秒
authentication{ //权限验证
auth_type PASS
auth_pass 111
}
virtual_ipaddress {
虚拟ip地址 //绑定虚拟ip,可以绑定多个
}
脚本文件内容:
#!/bin/bash A=`ps -C nginx –no-header |wc -l` if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx //启动nginx的位置 sleep 2 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then killall keepalived fi fi
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端