暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

第九期:Nginx虚拟主机配置、反向代理、代理缓存以及负载均衡配置

i运维 2021-06-21
717

一.  Nginx虚拟主机

1.1  虚拟主机的作用

虚拟主机提供了在同一台服务器上运行多个网站的功能。

1.2  虚拟主机的三种模式

·基于多域名方式配置虚拟主机

·基于多端口配置虚拟主机

·基于多ip配置虚拟主机

基于多域名的虚拟主机是最常见一种虚拟主机

 

只需配置DNS服务器,将每个主机名映射到正确的地址,然后配置Nginx服务器,令其识别不同的主机名就可以了

基于多端口的虚拟主机,可以使用同一个ip,通过访问不同的端口来访问

基于多Ip的虚拟主机可以通过添加多个网卡或者在一块物理网卡上绑定多个ip地址来实现

 

Ps:如果没有特殊要求,最好还是使用基于多域名的虚拟主机

1.2.1  多域名配置虚拟主机

配置hosts文件

[root@master ~]#cat etc/hosts

192.168.193.100  www.master.com

创建虚拟主机配置文件

#http模块中添加:

Include usr/local/nginx/conf/vshost/*.conf

#创建主机配置文件

mkdir -p/usr/local/nginx/conf/vhost

 

vim/usr/local/nginx/conf/vhost/www.jfedu.com.conf

server {

        listen 80;

        server_name www.jfedu.com;

        location {

                root usr/local/nginx/html/jfedu;

                index index.html index.htm;

        }

}

 

 

vim/usr/local/nginx/conf/vhost/www.jf.com.conf

server {

        listen 80;

        server_name www.jf.com;

        location {

                root usr/local/nginx/html/jf;

                index index.html index.htm;

        }

}

 

#域名解析

[root@master ~]#vim etc/hosts

#添加

192.168.193.100www.jfedu.com

192.168.193.100 www.jf.com

 

#访问测试

[root@master ~]#curl www.jfedu.com

this is jfedupage

[root@master ~]#curl www.jf.com

this is jf page

[root@master ~]#

1.2.2  多端口配置虚拟主机

[root@master ~]#vim usr/local/nginx/conf/vhost/www.jfedu.com.conf

server {

        listen 8080;#修改端口

        server_name www.jfedu.com;

        location {

                root /usr/local/nginx/html/jfedu;

                index index.html index.htm;

        }

}

 

 

#重启服务访问测试

[root@master ~]#curl www.jfedu.com:8080

this is jfedupage

[root@master ~]#curl www.jf.com:80

this is jf page

 

1.2.3  配置多IP虚拟主机

#添加网卡

[root@master ~]#cp /etc/sysconfig/network-scripts/ifcfg-ens33{,:1}

[root@master ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33:1

#修改

NAME="ens33:1"

DEVICE="ens33:1"

IPADDR="192.168.193.101"

#重启网卡

[root@master ~]#systemctl restart network

 

#修改配置文件

[root@master ~]#vim /usr/local/nginx/conf/vhost/www.jfedu.com.conf

server {

        listen 192.168.193.101:80;

        server_name www.jfedu.com;

        location / {

                root/usr/local/nginx/html/jfedu;

                index index.html index.htm;

        }

}

#域名解析修改配置文件

[root@master ~]#vim /etc/hosts

192.168.193.101 www.jfedu.com

#重启nginx

[root@master ~]#nginx -s reload

#访问测试

[root@master ~]#curl 192.168.193.101

this is jfedupage

[root@master ~]#curl 192.168.193.100

this is jf page

二.  Nginx反向代理

2.1  概念

反向代理是nginx的一个重要功能,在编译安装时会默认编译该模块。在配置文件中主要是配置proxy_pass指令。 

代理服务器接收客户端的请求,然后把请求代理给后端真是服务器进行处理,然后再将服务器的响应结果返给客户端。

2.2  反向代理作用

与正向代理(正向代理主要是代理客户端的请求)相反,反向代理主要是代理服务器服务返回的数据,所以它的作用主要是以下两点:

  1. 可以房子内部服务器被恶意攻击(内部服务器对客户端不可见)

  2. 为负载均衡和动静分离提供技术支持

2.3  反向代理语法:

Syntax:proxy_pass url;

Default:     -

Context:location, if in location,limit_except

代理服务器的协议,可以支持httphttps

地址可以指定为域名或者IP地址,以及可选端口。

例如:

       proxy_pass http://192.168.193.100;

       prpxy_pass http:// 192.168.193.100:8080;

       prpxy_pass http://localhost:9000/uri/;

2.4  Nginx代理缓存服务器实例

代理服务器:192.168.193.102

后端服务器:192.168.193.100

 

#代理服务器配置:

http {

       …

              #设置缓存

proxy_cache_path/data/nginx/cache max_size=10g levels=1:2 keys_zone=nginx_cache:10minactive=60m use_temp_path=off;

location / {

                proxy_pass http://192.168.193.100;

                            proxy_set_headerHost $host;

               proxy_set_header X_Real_IP $remote_addr;

                proxy_cachenginx_cache;

               proxy_cache_key $host$uri$is_args;

               proxy_cache_valid 200 301 302 1d;

        }

       …

       }

 

#创建缓存目录

mkdir /data/nginx/cache

#重启nginx服务,访问测试:

#访问代理服务器192.168.193.102

返回后端服务器192.168.193.100网页,实现了代理功能


#同时查看192.168.193.102服务器下缓存目录,发现已经存在缓存文件

[root@node2 ~]# tree /data/nginx/cache/

/data/nginx/cache/

└── 7

    └── 9b

       └──e4510baac2ac82e888672c580c05a9b7

 

2 directories, 1 file

#此时将192.168.193.100后端服务停止,前端页面依然可以访问,说明缓存生效。

三.  Nginx负载均衡

3.1  负载均衡目的

将前端超高并发访问转发至后端多台服务器进行处理,解决单个节点压力过大,赵成WEB服务响应过慢,严重的情况下导致服务瘫痪,无法正常提供服务的问题。

3.2  工作原理

负载均衡分为四层负载均衡和七层负载均衡。

 

四层负载均衡是工作在七层协议的第四层-传输层,主要工作是转发。

七层负载均衡是工作在七层协议的第七层-应用层,主要工作是代理。

 

3.3  配置七层负载均衡

前端服务器:192.168.193.102

后端服务器1192.168.193.100

后端服务器2:  192.168.193.101

 

前端服务器主要配置upstreamproxy_pass;

upstream 主要是配置均衡池和调度方法。

proxy_pass 主要是配置代理服务器ip或服务器组的名字。

proxy_set_header主要是配置转发给后端服务器的Host和前端客户端真是IP

3.4  配置前端nginx

#http指令块下配置upstream指令块

       upstream web {

        server 192.168.193.100;

        server 192.168.193.101;

}

       #location指令块配置proxy_pass

              server{

                            listen    80;

                             server_name localhost;

                            location / {

                proxy_pass http://web;

                     }

              }

       #访问测试:

       [root@node2~]# curl 192.168.193.102

this is192.168.193.100 page

[root@node2 ~]#curl 192.168.193.102

this is192.168.193.101 page

 

3.5  将本地镜像软件包发布并实现两台服务器均衡

#将本地镜像挂在到100101发布目录下

[root@master ~]#mount /dev/cdrom /usr/local/nginx/html/jfedu/

[root@master ~]#mount /dev/cdrom /usr/local/nginx/html/jf

#开启目录展示vim nginx.conf

autoindex on;

#访问测试



#由于采用虚拟主机方式,现将www.jf.com.conf配置注销

[root@master ~]#mv /usr/local/nginx/conf/vhost/www.jf.com.conf{,.bak}

重启nginx

[root@master ~]#/usr/local/nginx/sbin/nginx -s reload

仍然可以访问,此时只有一台101提供后端服务


不论你在什么时候开始,重要的是开始之后就不要停止!

--end--












了解更多请关注吧


点个小花花,让他们知道你“在看

文章转载自i运维,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论