nginx简单使用
1 Nginx反向代理
-
概念
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 -
首先理解正向代理
正向代理是针对你的客户端,而反向代理是针对服务器的,如下图
-
配置反向代理
将项目部署到tomcat中webapps的ROOT目录
-
修改nginx主机配置文件
-
重新启动配置
./nginx -s reload
-
通过浏览器访问
2. 负载均衡
- 概念
负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。 - 准备工作
(1)将刚才的存放工程的tomcat复制三份,修改端口分别为9998 ,9997,9996 。
(2)分别启动这三个tomcat服务。
(3)为了能够区分是访问哪个服务器的网站,可以在首页标题加上标记以便区分。
修改配置文件
weight 是权重的意思 配置权重越高 访问的几率越大
ip_hash 配置同一个ip访问的是同一个tomcat
backup 是热备 平时不会访问 当其他服务宕机时才会开始访问
- 重新启动配置
./nginx -s reload
- 通过浏览器访问
此时就会交替访问 权重高的访问几率大 热备不会访问
3 静态代理
把所有的静态代理的访问改为访问nginx,而不是访问tomcat,因为nginx更擅长静态资源的处理,性能更好,效率更高
3.1 方式一
-
Nginx静态代理实现
在nginx.conf文件进行配置即可实现(根据静态资源的格式/后缀名进行拦截)
在nginx.conf配置文件中添加静态资源的location,
当访问静态资源的时候,从linux服务器/opt/static目录下获取(举例)
location ~ .*.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
root /opt/static;
}
~ 表示正则匹配
. 第一个点 表示 任意字符
* 表示一个或多个字符
\ 是 转义字符
| 表示或者
$ 表示结尾
这个正则就是找后缀是这些的文件,如果有就到 /opt/statis目录下找 -
配置完后刷新配置
./nginx -s reload -
访问网页
此时发现找不到js等静态资源
因为之前配置静态资源从 /opt/static下找 但此时此目录下没有静态资源
4. 把tomcat的静态资源放到opt/static目录下
5. 此时在访问,就可以了
3.2 方式二
- Nginx静态代理实现
在nginx.conf文件进行配置即可实现(根据静态资源的访问目录,进行匹配)
在nginx.conf配置文件中添加静态资源的location,
当访问静态资源的时候,从linux服务器/opt/static目录下获取(举例)
方式二:(根据静态资源所在的目录进行拦截)
location ~ .*/(css|js|img|images|plugins) {
root /opt/static;
}
~ 表示正则匹配
. 第一个点 表示 任意字符
* 表示一个或多个字符
\ 是 转义字符
| 表示或者
$ 表示结尾
这个正则就是访问的资源中有这些路径,如果有就到 /opt/statis目录下找
配置完后刷新配置
./nginx -s reload
再次访问
4. 动静分离
Nginx的负载均衡和静态代理结合在一起,可以实现动静分离,
动态资源 : 如jsp由tomcat或其他web服务器完成;
静态资源 : 如图片 css js 由nginx服务器完成;
各司其职,专注于做自己擅长的事情
动静分离充分利用了他们各自的优势,从而达到更高效合理的架构
- 在日常开发中,前端请求静态文件比如图片资源是不需要经过后端服务器的,但是调用API这些类型的就需要后端进行处理请求,所以为了提高对资源文件的响应速度,我们应该使用动静分离的策略去做架构。我们可以将静态文件放到Nginx中,将动态资源的请求转发到后端服务器去进行进一步的处理。
为了方便演示 此处在同一个虚拟机上进行
1.简单流程
2. 如图所示
在一个虚拟机上可以启动多个nginx 只需指定不同的配置文件就行
使用命令复制两个nginx.conf
cp nginx.conf nginx81.conf
cp nginx.conf nginx82.conf
3. 配置nginx81.conf 和 nginx82.conf
nginx81.conf
82的和这个一样不过是把端口改为82
worker_processes 1;
pid /usr/local/nginx/logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 81; # 默认端口号
server_name www.ssm.com; # 域名或ip
# location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
# {
# root /opt/static;
# }
location ~ .*/(css|js|img|images|plugins) {
root /opt/static;
}
error_page 500 502 503 504 /50x.html; # 错误页面
location = /50x.html {
root html;
}
}
}
- 配置nginx.conf
worker_processes 1;
pid /usr/local/nginx/logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream tomcat-ssmwab1{
#ip_hash; #ip地址hash
server 192.168.153.138:9998 weight=2; # 权重 weight
server 192.168.153.138:9997;
server 192.168.153.138:9996 backup;# 热备 backup
}
upstream static.ssmweb.com{
#ip_hash; #ip地址hash
server 192.168.153.138:81;
server 192.168.153.138:82;
}
# 因为我的nginx都部署在一台虚拟机上
#所以这里的192.168.153.138是这台虚拟机的ip
server {
listen 80; # 默认端口号
server_name www.ssm.com; # 域名或ip
# location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
# {
# root /opt/static;
# }
location ~ .*/(css|js|img|images|plugins) {
proxy_pass http://static.ssmweb.com;
}
location ~ .*\.(jsp|java|php)$ {
# root index; # 默认访问的资源目录
proxy_pass http://tomcat-ssmwab1;
index login.jsp index.html index.htm ; # 默认访问资源名称
}
error_page 500 502 503 504 /50x.html; # 错误页面
location = /50x.html {
root html;
}
}
}
- 进入到nginx 的sbin目录下
分别启动三台nginx
./nginx -c /usr/local/nginx/conf/nginx.conf
./nginx -c /usr/local/nginx/conf/nginx81.conf
./nginx -c /usr/local/nginx/conf/nginx82.conf
查看nginx是否启动
ps -ef | grep -i nginx
访问项目