1、Nginx
由于商场项目会有大量的图片,传统的方式是将图片放在一个空间,然后将图片路径保存在数据库。这样会导致图片显示反应过慢。由于图片是一种静态资源,可以放在FastDFS图片服务器中。当发送对不同对图片的请求时,可以通过访问ngnix,然后ngnix在取调用FastDFs的图片路径,这样实现快速响应。
2、什么是nginx
nginx是一款高性能的http服务器/反向代理服务器及电子邮件(IMAP/PO3)代理服务器。且对cpu、内存等资源消耗低、运行稳定。其默认的访问端口是80端口。
3、应用场景
1、http服务器。做网页静态服务器。
2、虚拟主机。一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3、反向代理,负载均衡。当网站访问量达到一定程度后,单台服务器不能满足需求。此时需要不熟多台服务器集群加上nginx做为反向代理,实现对于服务器负载的适当的分担。
4、反向代理
正向代理:客户机发送http请求到指定服务代理服务器,然后代理服务器在外部网路取收索外部那台服务器能够提供服务(外部服务器没有代理服务器的地址)。
反向代理:
当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。但代理服务其并没有任何反向的意味。下图为反向的思路图解:
5、反向代理的配置(就在一台服务器访问多个网站)
1、通过端口区分不同的虚拟机
/usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
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"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
}
server {
listen 81;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html-81;
index index.html index.htm;
}
}
2、通过域名区分虚拟主机
一个域名对应一个ip地址,一个ip地址可以被多个域名绑定
本地测试可以修改hosts文件,修改hosts文件中配置了域名和ip的对应关系可以可以实现
192.168.25.148 www.taobao.com
192.168.25.148 www.baidu.com
/usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
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"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name www.taobao.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html-taobao;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.baidu.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html-baidu;
index index.html index.htm;
}
}
此时就实现了 请求 www.taobao.com 和www.baidu.com 访问到外服务器ip为192.168.25.148
6、反向代理的实现及负载均衡
第一步:安装两个tomcat,分别运行在8080、8081和8082端口。
第二步:启动两个tomcat。
第三步:反向代理服务器的配置
upstream tomcat1 {
server 192.168.25.148:8080;
}
server {
listen 80;
server_name www.sina.com.cn;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcat1;
index index.html index.htm;
}
}
upstream tomcat2 {
server 192.168.25.148:8081;
/*此处不配置,这是一个tomcat访问一次,weight的设置根据服务器情况的不同进行设置**/
server 192.168.25.148:8082 weight=2;
}
server {
listen 80;
server_name www.sohu.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcat2;
index index.html index.htm;
}
}
7、nginx的高可用
nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务,影响严重。为了屏蔽负载均衡服务器的宕机,需要建立一个备份机
7.1keepalived+nginx实现主备
keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。
Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
<<nginx.rar>>
学习包