1.实例1
访问 192.168.162.33的时候直接指向的是 https://192.168.162.33:8080
将http块中将其中的location里的内容进行修改,改成一下模式
location / {
proxy_pass http://192.168.162.33:8080/;
}
在浏览器中访问192.168.162.33/menu就是https://192.168.162.33:8080/menu
2.实例2
根据访问的路径跳转到不同端口的服务器中
student :http://192.168.162.34:8080
admin :http://192.168.162.35:8080
在serve中添加一个location
server {
listen 80;
server_name localhost;
location /student/{
proxy_pass http://192.168.162.34:8080/;
}
location /admin/ {
proxy_pass http://192.168.162.35:8080/;
}
当访问192.168.162.33/student/menu时,访问的就是http://192.168.162.34:8080/menu
location 指令说明 该指令用于匹配 URL。 语法如下:
location [ = | ~ |~* |^~] uri {
}
1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配 成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字 符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。 注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。
Nginx之所以要做负载均衡,是因为在高并发访问的情况下,单台服务器可能无法承受大量的请求,导致网站响应速度变慢或者直接崩溃。而通过负载均衡技术,可以将流量分发到多台服务器上,使得每台服务器承担的压力减小,从而提高整个系统的可用性和性能。
准备工作:
修改nginx.conf文件
upstream 上游
#要放到http块中,serve块外
upstream aaa
{
#添加服务器到负载均衡
server 192.168.162.34:8080 ;
server 192.168.162.35:8080 ;
}
serve中的location
location / {
#反向代理的地址
proxy_pass http://aaa/;
}
这样便是完成了负载均衡,而负载均衡也有他的配置策略
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2、weight
weight 代表权重默认为 1,权重越高被分配的客户端越多
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况
upstream aaa{
server 192.168.162.34:8080 weight=10;
server 192.168.162.35:8080 weight=100;
}
3、ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。 例如:
upstream aaa{
ip_hash;
server 192.168.162.34:8080 ;
server 192.168.162.35:8080 ;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream aaa{
fair;
server 192.168.162.34:8080 ;
server 192.168.162.35:8080 ;
}
Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和 静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用 Nginx 处理静态页面,Tomcat 处理动态页面。动静分离从目前实现角度来讲大是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;
配置静态资源:
约定:静态资源 location / {}
location / {
root /usr/tmp/dist; # vue项目所在的文件夹的路径
index index.html;
}
当你一定要给静态资源命名路径时要注意
location /dist {
root /usr/pro;
index index.html index.htm;
}
// location 路径
路径一定要包含root里面
访问dist的时候 ip:80/root目录/dist
location /aaa {
alias /usr/pro/dist;
index index.html index.htm;
}
alias 访问aaa的时候 其实访问的是 /usr/pro/dist
部署springboot项目
在其他虚拟机启动springboot项目,然后根据前面的配置反向代理时的步骤配置即可
切换到/lib/systemd/system/目录,创建nginx.service文件
cd /lib/systemd/system/
vim nginx.service
添加以下内容
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
保存并退出之后,使配置文件生效
systemctl daemon-reload
执行systemctl enable nginx.service使nginx开机启动
#开机自启动
systemctl enable nginx.service
#停止开机自启动
systemctl disable nginx.service
#查询当前状态
systemctl status nginx.service
#启动服务
systemctl start nginx.service
#重新启动服务
systemctl restart nginx.service
#停止服务
systemctl stop nginx.service
#重新加载配置
systemctl reload nginx.service