Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存小,并发能力强,
Nginx的并发能力在同类型的网页服务器中表现良好
Nginx专为性能优化而开发,性能是最重要的考量,实现上非常注意效率,能经受高负载的考验,支持高达50000个连接数
正向代理:代理客户端的就称之为正向代理(比如浏览器代理就是正向代理)
反向代理:代理服务器的就称之为反向代理 ==》 也就是客户端并不知道真实的
服务器,而是直接访问代理服务器,代理服务器根据域名等将请求转发给真实的
服务器
服务器的性能是处理并发请求的上限,如果单个服务器解决不了,那么我们就可以增加
服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器的情况
改为分发到多个服务器上。
为了加快网站的解析速度,可以把动态页面和静态页面交由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力
不重要,自己找博客看吧
1、使用nginx命令的前提条件: 进入nginx目录
cd /usr/local/nginx/sbin
3、启动nginx
./nginx
4、关闭nginx
nginx -s stop
5、重新加载nginx
nginx -s reload
/usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
upstream nginx-cluster{
server 127.0.0.1:8082;
}
server {
listen 80;
server_name localhost;
location /api {
proxy_pass http://nginx-cluster;
}
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
nginx配置文件主要由三部分组成
第一部分:全局块
从配置文件开始到 events块之间的内容,主要设置一些影响nginx服务器整体运行的配置指令,比如:worker_processes 1; 值越大,可以支持的并发处理量就越多
第二部分 events块
events块涉及的指令主要是 :用户与nginx服务器之间的网络连接。worker_connections 1024; 支持的最大连接数
第三部分 http块
http 全局块
server块
实现效果,在浏览器地址栏上输入地址 www.123.com,跳转到linux中安装的tomcat主页面中
1)在linux中安装tomcat,在8080端口启动
2)关闭防火墙
service iptables stop (centos6)
3)在windows系统中通过浏览器访问tomcat服务器
4) 访问过程
5)本地host文件编辑域名和ip的映射
6)配置反向的代理,将发送到192.168.2.180:80的请求转到到本地的 127.0.0.1:8080
server {
listen 80;
server_name 192.168.2.180;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
使用nginx反向代理,根据访问的路径,跳转到不同的端口服务中
nginx监听端口为9001
访问 127.0.0.1:9001/edu/ 直接跳转到127.0.1:8080
访问 127.0.0.1:9001/vod/ 直接跳转到127.0.1:8081
3)配置nginx
server {
listen 9001;
server_name 192.168.2.180;
location /edu/ {
proxy_pass http://127.0.0.1:8080;
}
location /vod/ {
proxy_pass http://127.0.0.1:8081;
}
}
实现效果
在浏览器地址栏中输入地址 :192.168.2.180/edu/a.html,使请求平均到 8080 和 8081端口的Tomcat中
1)准备2台tomcat服务器:8080 8081
2)在2台tomcat的webapps目录中,创建名称是edu的文件夹,在edu文件夹中创建页面 a.html,用于测试。 启动两台 tomcat,准备成功,示例如下(乱码不管了,没什么影响)
3)对nginx.conf 进行负载均衡配置
#负载均衡
upstream myserver{
server 192.168.2.180:8080;
server 192.168.2.180:8081;
}
#监听 192.168.2.180:80,并对请求进行分流
server {
listen 80;
server_name 192.168.2.180;
location / {
proxy_pass http://myserver;
}
}
4) 效果如下
刷新后
nginx 负载均衡的策略:
1、轮询(默认)
每个请求按时间逐一分配到不同的后端服务器,如果后端服务器down了,则能自动剔除
2、weight
weight代表权重,默认为1,权重越高,被分配的客户端就越多
#负载均衡
upstream myserver{
server 192.168.2.180:8080 weight=1;
server 192.168.2.180:8081 weight=2;
}
3、ip_hash
每个请求按照ip的hash结果分配,那么只要用户的ip不变,访问的服务器就不变,可以解决session的问题
upstream myserver{
ip_hash;
server 192.168.2.180:8080 weight=1;
server 192.168.2.180:8081 weight=2;
}
4、fair
根据后端服务器的响应时间来分配,响应时间短的优先分配
upstream myserver{
server 192.168.2.180:8080 weight=1;
server 192.168.2.180:8081 weight=2;
fair;
}