Nginx
Nginx是一款免费开源的异步框架的Web服务器,主要功能有Http缓存、虚拟主机、反向代理和负载均衡等。
Http缓存
nginx可以缓存Web文档(如HTML页面和图像等静态资源),以减少服务器延迟
示例配置
root /data/www/w3cschool;
#图片缓存时间设置
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 10d;
}
#JS和CSS缓存时间设置
location ~ .*.(js|css)?$
{
expires 1h;
}
虚拟主机
nginx可以通过配置多个server来配置多台虚拟主机,一个server对应一台虚拟主机,一台虚拟主机上可部署一个网站。各个虚拟主机的ip地址都是一样的(即服务器的ip地址),但是一个ip地址可以绑定不同的域名,所以每台虚拟主机都可以有自己独立的域名和端口号,但是80端口只有一个。一般情况下,多台虚拟主机共用80端口,然后根据域名来区分客户端的请求到底是访问哪一台虚拟主机,哪一个网站。
和反向代理、负载均衡本质区别
nginx发挥虚拟主机的功能,所有的请求都是在nginx内部处理的,各个网站也都是部署在nginx服务器上的,并没有涉及到另外的服务器,这和反向代理、负载均衡功能是有本质区别的。nginx在发挥反向代理和负载均衡功能时,只是起到一个中转站的作用,客户端发送的请求要先发给nginx服务器,然后由nginx服务器转发给web服务器。Web服务器返回的响应也要先发给nginx服务器,然后再由nginx服务器转发给客户端。
示例配置
server {
listen 80;
server_name www.yong.com;
index index.html;
root /data/www;
}
server {
listen 80;
server_name bbs.yong.com;
index index.html;
root /data/bbs;
}
Nginx反向代理
反向代理是相对于正向代理而言的,正向代理服务于客户端,反向代理服务于服务端。反向代理服务器位于客户端浏览器和web服务器之间,客户端不能直接向web服务器发请求,所有的请求都必须先发给反向代理服务器,然后由反向代理服务器转发给web服务器,同样,web服务器返回的响应也要先发给反向代理服务器,然后再转发给客户端。反向代理服务器发挥反向代理作用时就起到了一个中转站的作用。
正向代理和反向代理区别
-
引用知乎上阿笠硕士的图
示例配置
/etc/nginx/nginx.conf
可以 include /etc/nginx/conf.d/*.conf;
upstream tomcat1 {
server 192.168.xx.xxx:8080;
}
server {
listen 80;
server_name www.aaa.com.cn;
location / {
proxy_pass http://tomcat1;
index index.html index.htm;
}
}
upstream tomcat2 {
server 192.168.xx.xxx:8080;
}
server {
listen 80;
server_name www.bbb.com.cn;
location / {
proxy_pass http://tomcat2;
index index.html index.htm;
}
}
负载均衡
负载均衡指的是多个服务器共同完成一件事情,核心是“分摊压力”。Ngnix实现负载均衡指的是将请求转发给服务器集群。Ngnix默认处理负载均衡的方式是“轮询”,我们可以通过weight来调整权重。
示例配置
upstream tomcat1 {
server 192.168.xx.xxx:8080;
server 192.168.yy.yyy:8080 weight=2;
}
server {
listen 80;
server_name www.aaa.com.cn;
location / {
proxy_pass http://tomcat1;
index index.html index.htm;
}
}
Nginx 配置文件nginx.conf中文详解
其他部署
-
下图是一些项目采用的阿里云的部署方式,并没有用到Nginx的SLB功能,而是直接买了阿里云的SLB服务器