nginx知识点总结

nginx知识点总结

什么是nginx?

答:nginx是一款免费、开源的http服务器,它是由俄罗斯程序设计师开发的,官方测试,nginx能支撑5万的并发量,主要功能有虚拟主机反向代理负载均衡等。

 

nginx是如何发挥虚拟主机功能的?

答:nginx作为虚拟主机,简单理解,指的就是在一个nginx服务器上可同时运行多个网站。

像阿里云,一台服务器的租赁价格是非常贵了,对于小网站来说,成本太高。这个时候,可以合租,即多家网站共用一台服务器。每一个网站都要对应一台主机,这个时候就要用到服务器的虚拟主机功能。

nginx可以通过配置多个server来配置多台虚拟主机,一个server对应一台虚拟主机,一台虚拟主机上可部署一个网站。各个虚拟主机的ip地址都是一样的(即服务器的ip地址),但是一个ip地址可以绑定不同的域名,所以每台虚拟主机都可以有自己独立的域名和端口号,但是80端口只有一个,给谁用呢?一般情况下,多台虚拟主机共用80端口,然后根据域名来区分客户端的请求到底是访问哪一台虚拟主机,哪一个网站。

 

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;

}

验证结果,使用curl测试,或者浏览器输入域名访问

# curl -xlocalhost:80 www.yong.com

this is yong linux

# curl -xlocalhost:80 bbs.yong.com

this is yong bbs

 

 

注意:nginx发挥虚拟主机的功能,所有的请求都是在nginx内部处理的,各个网站也都是部署在nginx服务器上的,并没有涉及到另外的服务器,这和反向代理、负载均衡功能是有本质区别的。nginx在发挥反向代理和负载均衡功能时,只是起到一个中转站的作用,客户端发送的请求要先发给nginx服务器,然后由nginx服务器转发给web服务器。Web服务器返回的响应也要先发给nginx服务器,然后再由nginx服务器转发给客户端。

 

什么是反向代理?

答:反向代理是相对于正向代理而言的,正向代理服务于客户端,反向代理服务于服务端。反向代理服务器位于客户端浏览器和web服务器之间,客户端不能直接向web服务器发请求,所有的请求都必须先发给反向代理服务器,然后由反向代理服务器转发给web服务器,同样,web服务器返回的响应也要先发给反向代理服务器,然后再转发给客户端。反向代理服务器发挥反向代理作用时就起到了一个中转站的作用。

反向代理服务器可实现三大功能:

1. 保护网站安全。客户端无法直接访问到网站的web服务器,所有请求必须先经过反向代理服务器,相当于在web服务器和可能的网络攻击之间建立了一个屏障。

2. 缓存网站的静态资源,提高网站的响应速度。当用户第一次访问静态内容的时候,静态内容就被缓存在反向代理服务器上,这样当其他用户访问该静态内容的时候,就可以直接从反向代理服务器返回,加速web请求响应速度,减轻web服务器负载压力。

3. 负载均衡。反向代理服务器位于web服务器前面,这个位置正好也是负载均衡服务器的位置,所以大多数反向代理服务器同时提供负载均衡的功能。

 

什么是负载均衡?

答:负载均衡指的是多个服务器共同完成一件事情,核心是“分摊压力”。Ngnix实现负载均衡指的是将请求转发给服务器集群。Ngnix默认处理负载均衡的方式是“轮询”,我们可以通过weight来调整权重。

 

注意:反向代理和负载均衡是两个功能,但是并不是完全分开的,要想实现负载均衡,你必须要先实现反向代理的功能,当反向代理服务器代理的是一个服务器集群时,才能够实现负载均衡的功能,如果只代理一台服务器,那是没有办法实现负载均衡的。

反向代理和反向代理服务器严格上并不是一个意思,反向代理服务器能够实现反向代理的功能,同时大多数的反向代理服务器也能实现负载均衡的功能(这时我们可以称反向代理服务器为负载均衡服务器)。比如nginx服务器,它主要有三大功能:虚拟主机、反向代理和负载均衡。

 

当有人问你,什么是反向代理?

答:反向代理是相对于正向代理而言的,正向代理服务于客户端,反向代理服务于服务端。反向代理服务器位于客户端浏览器和web服务器之间,客户端不能直接向web服务器发请求,所有的请求都必须先发给反向代理服务器,然后由反向代理服务器转发给web服务器,同样,web服务器返回的响应也要先发给反向代理服务器,然后再转发给客户端。反向代理服务器发挥反向代理作用时就起到了一个中转站的作用。

 

当有人问你,什么是负载均衡?

答:实现负载均衡的服务器我们称之为负载均衡服务器,因为反向代理服务器所处的位置与负载均衡服务器所处的位置一致,所以大多数的反向代理服务器同时提供负载均衡的功能。要想实现负载均衡的功能,必须先实现反向代理的功能。当反向代理服务器代理的是一个web服务器集群而不是单个web服务器时,这就是负载均衡了。负载均衡指的是多个服务器共同完成一件事情,核心是“分摊压力”。Ngnix实现负载均衡指的是将请求转发给服务器集群。Ngnix默认处理负载均衡的方式是“轮询”,我们可以通过weight来调整权重。

 

nginx服务器发挥反向代理功能,代码演示:

upstream tomcat1 {

server 192.168.25.148:8080;

    }

    server {

        listen       80;

        server_name  www.sina.com.cn;

        location / {

            proxy_pass   http://tomcat1;

            index  index.html index.htm;

        }

}

 

    upstream tomcat2 {

server 192.168.25.148:8081;

    }

    server {

        listen       80;

        server_name  www.sohu.com;

        location / {

            proxy_pass   http://tomcat2;

            index  index.html index.htm;

        }

    }

 

nginx服务器发挥负载均衡功能,代码演示:

upstream tomcat1 {

server 192.168.25.148:8080;

server 192.168.25.148:8082;

    }

    server {

        listen       80;

        server_name  www.sina.com.cn;

        location / {

            proxy_pass   http://tomcat1;

            index  index.html index.htm;

        }

}

 

 

    upstream tomcat2 {

server 192.168.25.148:8081;

server 192.168.25.148:8084 weight=2;

    }

    server {

        listen       80;

        server_name  www.sohu.com;

        location / {

            proxy_pass   http://tomcat2;

            index  index.html index.htm;

        }

    }

 

nginx中,http指令的的作用?

答:接收http请求。

 

nginx中,server指令的的作用?

答:一个server对应一个虚拟主机,对应一个服务,对应一个网站。

 

nginx中,listen指令的的作用?

答;监听端口号。

 

nginx中,server-name指令的的作用?

答:监听域名。

 

nginx中,location指令的的作用?

答:对请求资源路径进行整合和分发。它可以使用字符串和正则表达式进行配置。

 

nginx中,location指令里的root属性的作用?

答:指定静态资源路径。

 

nginx中,location指令里的proxy-pass属性的作用?

答:指定反向代理的服务器的路径。

 

nginx中,upstream指令的作用?

答:映射proxy-pass指定的代理服务器的路径。

 

nginx如何作为虚拟主机使用的?

nginx作为虚拟主机指的就是在一个nginx上同时运行多个网站。nginx中有http指令、server指令,一个server就是一个虚拟主机,它指定一个网站,如何区分不同网站?可以通过端口号和域名来区分。我们推荐使用域名。

因为如果通过端口号来区分不同网站,就失去了使用nginx的意义,所有的网站都共用80端口。

 

代码举例:

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

 

    server {

        listen       80;

        server_name  www.test1.com;

        location / {

            root   html;

            index  index.html index.htm;

        }

}

 

    server {

        listen       80;

        server_name  www.test2.com;

        location / {

            root   html-81;

            index  index.html index.htm;

        }

}

}

 

什么是正向代理?

答:正向代理是针对客户端而言的。客户端想访问一个网站,但上不了网,可是客户端却能访问一个叫做代理服务器的东西,代理服务器可以帮助客户端上网。客户端先将请求发给代理服务器,代理服务器再将请求转发给网站,网站的响应结果先发给代理服务器,然后再由代理服务器转发给客户端。

简单来说,正向代理就是指代理服务器帮助客户端上网。

 

什么是反向代理?

答:反向代理是相对于正向代理而言的,正向代理服务于客户端,反向代理服务于服务端。反向代理服务器位于客户端浏览器和web服务器之间,客户端不能直接向web服务器发请求,所有的请求都必须先发给反向代理服务器,然后由反向代理服务器转发给web服务器,同样,web服务器返回的响应也要先发给反向代理服务器,然后再转发给客户端。反向代理服务器发挥反向代理作用时就起到了一个中转站的作用。

 

代码举例:

upstream tomcat1 {

server 192.168.25.148:8080;

    }

    server {

        listen       80;

        server_name  www.sina.com.cn;

        location / {

            proxy_pass   http://tomcat1;

            index  index.html index.htm;

        }

}

 

 

    upstream tomcat2 {

server 192.168.25.148:8081;

    }

    server {

        listen       80;

        server_name  www.sohu.com;

        location / {

            proxy_pass   http://tomcat2;

            index  index.html index.htm;

        }

    }

 

nginx中,location指令里的proxy-pass属性的作用?

答:指定反向代理的服务器的路径。

 

nginx中,upstream指令的作用?

答:映射proxy-pass指定的代理服务器的路径。

 

13.什么是负载均衡?

答:实现负载均衡的服务器我们称之为负载均衡服务器,因为反向代理服务器所处的位置与负载均衡服务器所处的位置一致,所以大多数的反向代理服务器同时提供负载均衡的功能。要想实现负载均衡的功能,必须先实现反向代理的功能。当反向代理服务器代理的是一个web服务器集群而不是单个web服务器时,这就是负载均衡了。负载均衡指的是多个服务器共同完成一件事情,核心是“分摊压力”。Ngnix实现负载均衡指的是将请求转发给服务器集群。Ngnix默认处理负载均衡的方式是“轮询”,我们可以通过weight来调整权重。

 

代码举例:

upstream tomcat1 {

server 192.168.25.148:8080;

server 192.168.25.148:8082;

    }

    server {

        listen       80;

        server_name  www.sina.com.cn;

        location / {

            proxy_pass   http://tomcat1;

            index  index.html index.htm;

        }

}

 

 

    upstream tomcat2 {

server 192.168.25.148:8081;

server 192.168.25.148:8084 weight=2;

    }

    server {

        listen       80;

        server_name  www.sohu.com;

        location / {

            proxy_pass   http://tomcat2;

            index  index.html index.htm;

        }

    }

 


阅读更多

没有更多推荐了,返回首页