nginx反向代理

1.Nginx虚拟主机:

1.1.1 虚拟主机作用:

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

1.1.2 虚拟主机的三种模式:
  • 基于多域名方式配置虚拟主机
  • 基于多端口配置虚拟主机
  • 基于多ip配置虚拟主机
  • 基于多域名的虚拟主机是最常见的一种虚拟主机。只需配置你的DNS服务器,将每个主机名映射到正确的IP地址,然后配置 Nginx服务器,令其识别不同的主机名就可以了。

1.2.实验:

nginx.conf文件介绍

1.2.1 多端口实验

创建一个目录,下面存放虚拟主机文件。
同时在nginx.conf中配置如下语句。

include  vhost/*.conf;  #如果搞不清目录,就指定绝对路径/home/vhost/*.conf(自定义)
这个参数的作用就是将nginx.conf文件中的配置分分离出来。

在这里插入图片描述
在这里插入图片描述

v1.jfedu.conf
    server {
        listen       8080;
        server_name  v1.jfedu.net;
        charset utf-8;
        access_log  logs/host.access.log  main;
        location / {
            root   /home/hadoop/nginx/v1;
            index  index.html index.htm;
        }
	}
v2.jfedu.conf
    server {
        listen       8081;
        server_name  v1.jfedu.net;
        charset utf-8;
        access_log  logs/v3.access.log  main;
        location / {
            root   /home/hadoop/nginx/v2;
            index  index.html index.htm;
        }
}
重启服务
/home/hadoop/nginx/sbin/nginx -s  reload

将域名添加到hosts文件中,进行域名加端口访问

curl  v1.jfedu.net:8080  
curl  v1.jfedu.net:8081   #不同的端口访问的页面不同

2.反向代理

2.1 概念

反向代理是nginx的一个重要功能,在编译安装时会默认编译该模块。在配 置文件中主要配置proxy_pass指令。
代理服务器接受客户端的请求,然后把请求代理给后端真实服务器进行处 理,然后再将服务器的响应结果返给客户端。

2.2 反向代理作用

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

  • 可以防止内部服务器被恶意攻击(内部服务器对客户端不可见)。
  • 为负载均衡和动静分离提供技术支持.
2.2.1 反向代理语法:

代理服务器的协议,可支持http与https。
地址可以指定为域名或IP地址,以及可选端口。

Syntax: proxy_pass URL;
Default: —
Context: location, if in location, limit_except

2.3 实验

后端: 192.168.60.6
代理: 192.168.60.5

代理端:


location / {
            proxy_pass http://192.168.60.6;
        }

在这里插入图片描述
后端:

location /{
           echo $host;
           root html;
           index index.html;
       }
#下图中,后端默认为80端口,如果不是80端口,可以在代理端指定对应的端口或者域名,
#即:proxy_pass http://192.168.60.6:8080
#或者proxy_pass v1.jfedu.net:8080

在这里插入图片描述

注意: 这个地方配置后,重启服务可能会报错没有echo模块
在这里插入图片描述
(1)这个地方需要安装echo模块,将echo-nginx-module-0.61.tar上传到服务器上,然后解压。
在这里插入图片描述
(2)进入之前编译nginx的目录,重新进行预编译,对nginx模块进行升级,问题即可解决

cd /home/nginx-1.16.0
#增加echo模块
./configure --prefix=/home/hadoop/nginx  --add-module=/home/echo-nginx-module-0.61   

make && make install 

make upgrade  #更新

在这里插入图片描述

2.3.1 测试

访问代理端地址,结果如下
在这里插入图片描述
访问网页:

后端: 192.168.60.6
        location /{
                #echo $host;  注释掉host语句,就可以得到代理的页面
                root html;
                index index.html;
                }

在这里插入图片描述

3. 代理缓存服务器实战

在代理服务器的磁盘中保存请求目标的内容,加快响应速度,减少应用服 务器(后端服务器)上的资源开销,比如多客户端请求相同的资源,代理 缓存命中后,对于应用服务器来说,只发生了一次资源调度。

而浏览器上的缓存配置,一般来说是用来减少本地IO的,请求目标的内容 会存放在浏览器本地。

# 代理服务器配置:
proxy_cache_path /data/nginx/cache  max_size=10g
 levels=1:2 keys_zone=nginx_cache:10m inactive=10m
use_temp_path=off;

upstream nginx {
   server 192.168.60.5;
}
server {
 listen    80;
 server_name localhost;
location / {
 root  html;
 index index.html index.htm;
 proxy_pass http://nginx;
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_cache nginx_cache;
 proxy_cache_key $host$uri$is_args$args;
 proxy_cache_valid 200 304 302 1d;
 }
}
# /data/nginx/cache #缓存资源存放路径
# levels       #设置缓存资源的递归级别,默认为
levels=1:2,表示Nginx为将要缓存的资源生成的key从后依次设置两级保
存。
key_zone     #在共享内存中设置一块存储区域来存放缓存的key和
metadata,这样nginx可以快速判断一个request是否命中或者未命中缓存,
1m可以存储8000个key,10m可以存储80000个key
max_size     #最大cache空间,如果不指定,会使用掉所有disk
space,当达到配额后,会删除不活跃的cache文件
inactive     #未被访问文件在缓存中保留时间,本配置中如果60分钟
未被访问则不论状态是否为expired,缓存控制程序会删掉文件。inactive默
认是10分钟。需要注意的是,inactive和expired配置项的含义是不同的,
expired只是缓存过期,但不会被删除,inactive是删除指定时间内未被访问
的缓存文件
use_temp_path  #如果为off,则nginx会将缓存文件直接写入指定的
cache文件中,而不是使用temp_path存储,official建议为off,避免文件
在不同文件系统中不必要的拷贝
proxy_cache   #启用proxy cache,并指定key_zone。如果
proxy_cache off表示关闭掉缓存。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值